# -*- coding: utf-8 -*-
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
from __future__ import annotations

from typing import MutableMapping, MutableSequence

import proto  # type: ignore

__protobuf__ = proto.module(
    package="google.cloud.compute.v1",
    manifest={
        "AbandonInstancesInstanceGroupManagerRequest",
        "AbandonInstancesRegionInstanceGroupManagerRequest",
        "AcceleratorConfig",
        "AcceleratorType",
        "AcceleratorTypeAggregatedList",
        "AcceleratorTypeList",
        "AcceleratorTypesScopedList",
        "Accelerators",
        "AccessConfig",
        "AddAccessConfigInstanceRequest",
        "AddAssociationFirewallPolicyRequest",
        "AddAssociationNetworkFirewallPolicyRequest",
        "AddAssociationRegionNetworkFirewallPolicyRequest",
        "AddHealthCheckTargetPoolRequest",
        "AddInstanceTargetPoolRequest",
        "AddInstancesInstanceGroupRequest",
        "AddNodesNodeGroupRequest",
        "AddPeeringNetworkRequest",
        "AddResourcePoliciesDiskRequest",
        "AddResourcePoliciesInstanceRequest",
        "AddResourcePoliciesRegionDiskRequest",
        "AddRuleFirewallPolicyRequest",
        "AddRuleNetworkFirewallPolicyRequest",
        "AddRuleRegionNetworkFirewallPolicyRequest",
        "AddRuleSecurityPolicyRequest",
        "AddSignedUrlKeyBackendBucketRequest",
        "AddSignedUrlKeyBackendServiceRequest",
        "Address",
        "AddressAggregatedList",
        "AddressList",
        "AddressesScopedList",
        "AdvancedMachineFeatures",
        "AggregatedListAcceleratorTypesRequest",
        "AggregatedListAddressesRequest",
        "AggregatedListAutoscalersRequest",
        "AggregatedListBackendServicesRequest",
        "AggregatedListDiskTypesRequest",
        "AggregatedListDisksRequest",
        "AggregatedListForwardingRulesRequest",
        "AggregatedListGlobalOperationsRequest",
        "AggregatedListHealthChecksRequest",
        "AggregatedListInstanceGroupManagersRequest",
        "AggregatedListInstanceGroupsRequest",
        "AggregatedListInstanceTemplatesRequest",
        "AggregatedListInstancesRequest",
        "AggregatedListInterconnectAttachmentsRequest",
        "AggregatedListMachineTypesRequest",
        "AggregatedListNetworkAttachmentsRequest",
        "AggregatedListNetworkEdgeSecurityServicesRequest",
        "AggregatedListNetworkEndpointGroupsRequest",
        "AggregatedListNodeGroupsRequest",
        "AggregatedListNodeTemplatesRequest",
        "AggregatedListNodeTypesRequest",
        "AggregatedListPacketMirroringsRequest",
        "AggregatedListPublicDelegatedPrefixesRequest",
        "AggregatedListRegionCommitmentsRequest",
        "AggregatedListReservationsRequest",
        "AggregatedListResourcePoliciesRequest",
        "AggregatedListRoutersRequest",
        "AggregatedListSecurityPoliciesRequest",
        "AggregatedListServiceAttachmentsRequest",
        "AggregatedListSslCertificatesRequest",
        "AggregatedListSslPoliciesRequest",
        "AggregatedListSubnetworksRequest",
        "AggregatedListTargetHttpProxiesRequest",
        "AggregatedListTargetHttpsProxiesRequest",
        "AggregatedListTargetInstancesRequest",
        "AggregatedListTargetPoolsRequest",
        "AggregatedListTargetTcpProxiesRequest",
        "AggregatedListTargetVpnGatewaysRequest",
        "AggregatedListUrlMapsRequest",
        "AggregatedListVpnGatewaysRequest",
        "AggregatedListVpnTunnelsRequest",
        "AliasIpRange",
        "AllocationResourceStatus",
        "AllocationResourceStatusSpecificSKUAllocation",
        "AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk",
        "AllocationSpecificSKUAllocationReservedInstanceProperties",
        "AllocationSpecificSKUReservation",
        "Allowed",
        "ApplyUpdatesToInstancesInstanceGroupManagerRequest",
        "ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest",
        "AttachDiskInstanceRequest",
        "AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest",
        "AttachNetworkEndpointsNetworkEndpointGroupRequest",
        "AttachedDisk",
        "AttachedDiskInitializeParams",
        "AuditConfig",
        "AuditLogConfig",
        "AuthorizationLoggingOptions",
        "Autoscaler",
        "AutoscalerAggregatedList",
        "AutoscalerList",
        "AutoscalerStatusDetails",
        "AutoscalersScopedList",
        "AutoscalingPolicy",
        "AutoscalingPolicyCpuUtilization",
        "AutoscalingPolicyCustomMetricUtilization",
        "AutoscalingPolicyLoadBalancingUtilization",
        "AutoscalingPolicyScaleInControl",
        "AutoscalingPolicyScalingSchedule",
        "Backend",
        "BackendBucket",
        "BackendBucketCdnPolicy",
        "BackendBucketCdnPolicyBypassCacheOnRequestHeader",
        "BackendBucketCdnPolicyCacheKeyPolicy",
        "BackendBucketCdnPolicyNegativeCachingPolicy",
        "BackendBucketList",
        "BackendService",
        "BackendServiceAggregatedList",
        "BackendServiceCdnPolicy",
        "BackendServiceCdnPolicyBypassCacheOnRequestHeader",
        "BackendServiceCdnPolicyNegativeCachingPolicy",
        "BackendServiceConnectionTrackingPolicy",
        "BackendServiceFailoverPolicy",
        "BackendServiceGroupHealth",
        "BackendServiceIAP",
        "BackendServiceList",
        "BackendServiceLocalityLoadBalancingPolicyConfig",
        "BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy",
        "BackendServiceLocalityLoadBalancingPolicyConfigPolicy",
        "BackendServiceLogConfig",
        "BackendServiceReference",
        "BackendServicesScopedList",
        "BfdPacket",
        "BfdStatus",
        "BfdStatusPacketCounts",
        "Binding",
        "BulkInsertInstanceRequest",
        "BulkInsertInstanceResource",
        "BulkInsertInstanceResourcePerInstanceProperties",
        "BulkInsertRegionInstanceRequest",
        "CacheInvalidationRule",
        "CacheKeyPolicy",
        "CircuitBreakers",
        "CloneRulesFirewallPolicyRequest",
        "CloneRulesNetworkFirewallPolicyRequest",
        "CloneRulesRegionNetworkFirewallPolicyRequest",
        "Commitment",
        "CommitmentAggregatedList",
        "CommitmentList",
        "CommitmentsScopedList",
        "Condition",
        "ConfidentialInstanceConfig",
        "ConnectionDraining",
        "ConsistentHashLoadBalancerSettings",
        "ConsistentHashLoadBalancerSettingsHttpCookie",
        "CorsPolicy",
        "CreateInstancesInstanceGroupManagerRequest",
        "CreateInstancesRegionInstanceGroupManagerRequest",
        "CreateSnapshotDiskRequest",
        "CreateSnapshotRegionDiskRequest",
        "CustomerEncryptionKey",
        "CustomerEncryptionKeyProtectedDisk",
        "Data",
        "DeleteAccessConfigInstanceRequest",
        "DeleteAddressRequest",
        "DeleteAutoscalerRequest",
        "DeleteBackendBucketRequest",
        "DeleteBackendServiceRequest",
        "DeleteDiskRequest",
        "DeleteExternalVpnGatewayRequest",
        "DeleteFirewallPolicyRequest",
        "DeleteFirewallRequest",
        "DeleteForwardingRuleRequest",
        "DeleteGlobalAddressRequest",
        "DeleteGlobalForwardingRuleRequest",
        "DeleteGlobalNetworkEndpointGroupRequest",
        "DeleteGlobalOperationRequest",
        "DeleteGlobalOperationResponse",
        "DeleteGlobalOrganizationOperationRequest",
        "DeleteGlobalOrganizationOperationResponse",
        "DeleteGlobalPublicDelegatedPrefixeRequest",
        "DeleteHealthCheckRequest",
        "DeleteImageRequest",
        "DeleteInstanceGroupManagerRequest",
        "DeleteInstanceGroupRequest",
        "DeleteInstanceRequest",
        "DeleteInstanceTemplateRequest",
        "DeleteInstancesInstanceGroupManagerRequest",
        "DeleteInstancesRegionInstanceGroupManagerRequest",
        "DeleteInterconnectAttachmentRequest",
        "DeleteInterconnectRequest",
        "DeleteLicenseRequest",
        "DeleteMachineImageRequest",
        "DeleteNetworkAttachmentRequest",
        "DeleteNetworkEdgeSecurityServiceRequest",
        "DeleteNetworkEndpointGroupRequest",
        "DeleteNetworkFirewallPolicyRequest",
        "DeleteNetworkRequest",
        "DeleteNodeGroupRequest",
        "DeleteNodeTemplateRequest",
        "DeleteNodesNodeGroupRequest",
        "DeletePacketMirroringRequest",
        "DeletePerInstanceConfigsInstanceGroupManagerRequest",
        "DeletePerInstanceConfigsRegionInstanceGroupManagerRequest",
        "DeletePublicAdvertisedPrefixeRequest",
        "DeletePublicDelegatedPrefixeRequest",
        "DeleteRegionAutoscalerRequest",
        "DeleteRegionBackendServiceRequest",
        "DeleteRegionDiskRequest",
        "DeleteRegionHealthCheckRequest",
        "DeleteRegionHealthCheckServiceRequest",
        "DeleteRegionInstanceGroupManagerRequest",
        "DeleteRegionInstanceTemplateRequest",
        "DeleteRegionNetworkEndpointGroupRequest",
        "DeleteRegionNetworkFirewallPolicyRequest",
        "DeleteRegionNotificationEndpointRequest",
        "DeleteRegionOperationRequest",
        "DeleteRegionOperationResponse",
        "DeleteRegionSecurityPolicyRequest",
        "DeleteRegionSslCertificateRequest",
        "DeleteRegionSslPolicyRequest",
        "DeleteRegionTargetHttpProxyRequest",
        "DeleteRegionTargetHttpsProxyRequest",
        "DeleteRegionTargetTcpProxyRequest",
        "DeleteRegionUrlMapRequest",
        "DeleteReservationRequest",
        "DeleteResourcePolicyRequest",
        "DeleteRouteRequest",
        "DeleteRouterRequest",
        "DeleteSecurityPolicyRequest",
        "DeleteServiceAttachmentRequest",
        "DeleteSignedUrlKeyBackendBucketRequest",
        "DeleteSignedUrlKeyBackendServiceRequest",
        "DeleteSnapshotRequest",
        "DeleteSslCertificateRequest",
        "DeleteSslPolicyRequest",
        "DeleteSubnetworkRequest",
        "DeleteTargetGrpcProxyRequest",
        "DeleteTargetHttpProxyRequest",
        "DeleteTargetHttpsProxyRequest",
        "DeleteTargetInstanceRequest",
        "DeleteTargetPoolRequest",
        "DeleteTargetSslProxyRequest",
        "DeleteTargetTcpProxyRequest",
        "DeleteTargetVpnGatewayRequest",
        "DeleteUrlMapRequest",
        "DeleteVpnGatewayRequest",
        "DeleteVpnTunnelRequest",
        "DeleteZoneOperationRequest",
        "DeleteZoneOperationResponse",
        "Denied",
        "DeprecateImageRequest",
        "DeprecationStatus",
        "DetachDiskInstanceRequest",
        "DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest",
        "DetachNetworkEndpointsNetworkEndpointGroupRequest",
        "DisableXpnHostProjectRequest",
        "DisableXpnResourceProjectRequest",
        "Disk",
        "DiskAggregatedList",
        "DiskInstantiationConfig",
        "DiskList",
        "DiskMoveRequest",
        "DiskParams",
        "DiskType",
        "DiskTypeAggregatedList",
        "DiskTypeList",
        "DiskTypesScopedList",
        "DisksAddResourcePoliciesRequest",
        "DisksRemoveResourcePoliciesRequest",
        "DisksResizeRequest",
        "DisksScopedList",
        "DisplayDevice",
        "DistributionPolicy",
        "DistributionPolicyZoneConfiguration",
        "Duration",
        "EnableXpnHostProjectRequest",
        "EnableXpnResourceProjectRequest",
        "Error",
        "ErrorDetails",
        "ErrorInfo",
        "Errors",
        "ExchangedPeeringRoute",
        "ExchangedPeeringRoutesList",
        "ExpandIpCidrRangeSubnetworkRequest",
        "Expr",
        "ExternalVpnGateway",
        "ExternalVpnGatewayInterface",
        "ExternalVpnGatewayList",
        "FileContentBuffer",
        "Firewall",
        "FirewallList",
        "FirewallLogConfig",
        "FirewallPoliciesListAssociationsResponse",
        "FirewallPolicy",
        "FirewallPolicyAssociation",
        "FirewallPolicyList",
        "FirewallPolicyRule",
        "FirewallPolicyRuleMatcher",
        "FirewallPolicyRuleMatcherLayer4Config",
        "FirewallPolicyRuleSecureTag",
        "FixedOrPercent",
        "ForwardingRule",
        "ForwardingRuleAggregatedList",
        "ForwardingRuleList",
        "ForwardingRuleReference",
        "ForwardingRuleServiceDirectoryRegistration",
        "ForwardingRulesScopedList",
        "GRPCHealthCheck",
        "GetAcceleratorTypeRequest",
        "GetAddressRequest",
        "GetAssociationFirewallPolicyRequest",
        "GetAssociationNetworkFirewallPolicyRequest",
        "GetAssociationRegionNetworkFirewallPolicyRequest",
        "GetAutoscalerRequest",
        "GetBackendBucketRequest",
        "GetBackendServiceRequest",
        "GetDiagnosticsInterconnectRequest",
        "GetDiskRequest",
        "GetDiskTypeRequest",
        "GetEffectiveFirewallsInstanceRequest",
        "GetEffectiveFirewallsNetworkRequest",
        "GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest",
        "GetExternalVpnGatewayRequest",
        "GetFirewallPolicyRequest",
        "GetFirewallRequest",
        "GetForwardingRuleRequest",
        "GetFromFamilyImageRequest",
        "GetGlobalAddressRequest",
        "GetGlobalForwardingRuleRequest",
        "GetGlobalNetworkEndpointGroupRequest",
        "GetGlobalOperationRequest",
        "GetGlobalOrganizationOperationRequest",
        "GetGlobalPublicDelegatedPrefixeRequest",
        "GetGuestAttributesInstanceRequest",
        "GetHealthBackendServiceRequest",
        "GetHealthCheckRequest",
        "GetHealthRegionBackendServiceRequest",
        "GetHealthTargetPoolRequest",
        "GetIamPolicyBackendServiceRequest",
        "GetIamPolicyDiskRequest",
        "GetIamPolicyFirewallPolicyRequest",
        "GetIamPolicyImageRequest",
        "GetIamPolicyInstanceRequest",
        "GetIamPolicyInstanceTemplateRequest",
        "GetIamPolicyLicenseRequest",
        "GetIamPolicyMachineImageRequest",
        "GetIamPolicyNetworkAttachmentRequest",
        "GetIamPolicyNetworkFirewallPolicyRequest",
        "GetIamPolicyNodeGroupRequest",
        "GetIamPolicyNodeTemplateRequest",
        "GetIamPolicyRegionBackendServiceRequest",
        "GetIamPolicyRegionDiskRequest",
        "GetIamPolicyRegionNetworkFirewallPolicyRequest",
        "GetIamPolicyReservationRequest",
        "GetIamPolicyResourcePolicyRequest",
        "GetIamPolicyServiceAttachmentRequest",
        "GetIamPolicySnapshotRequest",
        "GetIamPolicySubnetworkRequest",
        "GetImageFamilyViewRequest",
        "GetImageRequest",
        "GetInstanceGroupManagerRequest",
        "GetInstanceGroupRequest",
        "GetInstanceRequest",
        "GetInstanceTemplateRequest",
        "GetInterconnectAttachmentRequest",
        "GetInterconnectLocationRequest",
        "GetInterconnectRequest",
        "GetLicenseCodeRequest",
        "GetLicenseRequest",
        "GetMachineImageRequest",
        "GetMachineTypeRequest",
        "GetNatMappingInfoRoutersRequest",
        "GetNetworkAttachmentRequest",
        "GetNetworkEdgeSecurityServiceRequest",
        "GetNetworkEndpointGroupRequest",
        "GetNetworkFirewallPolicyRequest",
        "GetNetworkRequest",
        "GetNodeGroupRequest",
        "GetNodeTemplateRequest",
        "GetNodeTypeRequest",
        "GetPacketMirroringRequest",
        "GetProjectRequest",
        "GetPublicAdvertisedPrefixeRequest",
        "GetPublicDelegatedPrefixeRequest",
        "GetRegionAutoscalerRequest",
        "GetRegionBackendServiceRequest",
        "GetRegionCommitmentRequest",
        "GetRegionDiskRequest",
        "GetRegionDiskTypeRequest",
        "GetRegionHealthCheckRequest",
        "GetRegionHealthCheckServiceRequest",
        "GetRegionInstanceGroupManagerRequest",
        "GetRegionInstanceGroupRequest",
        "GetRegionInstanceTemplateRequest",
        "GetRegionNetworkEndpointGroupRequest",
        "GetRegionNetworkFirewallPolicyRequest",
        "GetRegionNotificationEndpointRequest",
        "GetRegionOperationRequest",
        "GetRegionRequest",
        "GetRegionSecurityPolicyRequest",
        "GetRegionSslCertificateRequest",
        "GetRegionSslPolicyRequest",
        "GetRegionTargetHttpProxyRequest",
        "GetRegionTargetHttpsProxyRequest",
        "GetRegionTargetTcpProxyRequest",
        "GetRegionUrlMapRequest",
        "GetReservationRequest",
        "GetResourcePolicyRequest",
        "GetRouteRequest",
        "GetRouterRequest",
        "GetRouterStatusRouterRequest",
        "GetRuleFirewallPolicyRequest",
        "GetRuleNetworkFirewallPolicyRequest",
        "GetRuleRegionNetworkFirewallPolicyRequest",
        "GetRuleSecurityPolicyRequest",
        "GetScreenshotInstanceRequest",
        "GetSecurityPolicyRequest",
        "GetSerialPortOutputInstanceRequest",
        "GetServiceAttachmentRequest",
        "GetShieldedInstanceIdentityInstanceRequest",
        "GetSnapshotRequest",
        "GetSslCertificateRequest",
        "GetSslPolicyRequest",
        "GetStatusVpnGatewayRequest",
        "GetSubnetworkRequest",
        "GetTargetGrpcProxyRequest",
        "GetTargetHttpProxyRequest",
        "GetTargetHttpsProxyRequest",
        "GetTargetInstanceRequest",
        "GetTargetPoolRequest",
        "GetTargetSslProxyRequest",
        "GetTargetTcpProxyRequest",
        "GetTargetVpnGatewayRequest",
        "GetUrlMapRequest",
        "GetVpnGatewayRequest",
        "GetVpnTunnelRequest",
        "GetXpnHostProjectRequest",
        "GetXpnResourcesProjectsRequest",
        "GetZoneOperationRequest",
        "GetZoneRequest",
        "GlobalNetworkEndpointGroupsAttachEndpointsRequest",
        "GlobalNetworkEndpointGroupsDetachEndpointsRequest",
        "GlobalOrganizationSetPolicyRequest",
        "GlobalSetLabelsRequest",
        "GlobalSetPolicyRequest",
        "GuestAttributes",
        "GuestAttributesEntry",
        "GuestAttributesValue",
        "GuestOsFeature",
        "HTTP2HealthCheck",
        "HTTPHealthCheck",
        "HTTPSHealthCheck",
        "HealthCheck",
        "HealthCheckList",
        "HealthCheckLogConfig",
        "HealthCheckReference",
        "HealthCheckService",
        "HealthCheckServiceReference",
        "HealthCheckServicesList",
        "HealthChecksAggregatedList",
        "HealthChecksScopedList",
        "HealthStatus",
        "HealthStatusForNetworkEndpoint",
        "Help",
        "HelpLink",
        "HostRule",
        "HttpFaultAbort",
        "HttpFaultDelay",
        "HttpFaultInjection",
        "HttpHeaderAction",
        "HttpHeaderMatch",
        "HttpHeaderOption",
        "HttpQueryParameterMatch",
        "HttpRedirectAction",
        "HttpRetryPolicy",
        "HttpRouteAction",
        "HttpRouteRule",
        "HttpRouteRuleMatch",
        "Image",
        "ImageFamilyView",
        "ImageList",
        "InitialStateConfig",
        "InsertAddressRequest",
        "InsertAutoscalerRequest",
        "InsertBackendBucketRequest",
        "InsertBackendServiceRequest",
        "InsertDiskRequest",
        "InsertExternalVpnGatewayRequest",
        "InsertFirewallPolicyRequest",
        "InsertFirewallRequest",
        "InsertForwardingRuleRequest",
        "InsertGlobalAddressRequest",
        "InsertGlobalForwardingRuleRequest",
        "InsertGlobalNetworkEndpointGroupRequest",
        "InsertGlobalPublicDelegatedPrefixeRequest",
        "InsertHealthCheckRequest",
        "InsertImageRequest",
        "InsertInstanceGroupManagerRequest",
        "InsertInstanceGroupRequest",
        "InsertInstanceRequest",
        "InsertInstanceTemplateRequest",
        "InsertInterconnectAttachmentRequest",
        "InsertInterconnectRequest",
        "InsertLicenseRequest",
        "InsertMachineImageRequest",
        "InsertNetworkAttachmentRequest",
        "InsertNetworkEdgeSecurityServiceRequest",
        "InsertNetworkEndpointGroupRequest",
        "InsertNetworkFirewallPolicyRequest",
        "InsertNetworkRequest",
        "InsertNodeGroupRequest",
        "InsertNodeTemplateRequest",
        "InsertPacketMirroringRequest",
        "InsertPublicAdvertisedPrefixeRequest",
        "InsertPublicDelegatedPrefixeRequest",
        "InsertRegionAutoscalerRequest",
        "InsertRegionBackendServiceRequest",
        "InsertRegionCommitmentRequest",
        "InsertRegionDiskRequest",
        "InsertRegionHealthCheckRequest",
        "InsertRegionHealthCheckServiceRequest",
        "InsertRegionInstanceGroupManagerRequest",
        "InsertRegionInstanceTemplateRequest",
        "InsertRegionNetworkEndpointGroupRequest",
        "InsertRegionNetworkFirewallPolicyRequest",
        "InsertRegionNotificationEndpointRequest",
        "InsertRegionSecurityPolicyRequest",
        "InsertRegionSslCertificateRequest",
        "InsertRegionSslPolicyRequest",
        "InsertRegionTargetHttpProxyRequest",
        "InsertRegionTargetHttpsProxyRequest",
        "InsertRegionTargetTcpProxyRequest",
        "InsertRegionUrlMapRequest",
        "InsertReservationRequest",
        "InsertResourcePolicyRequest",
        "InsertRouteRequest",
        "InsertRouterRequest",
        "InsertSecurityPolicyRequest",
        "InsertServiceAttachmentRequest",
        "InsertSnapshotRequest",
        "InsertSslCertificateRequest",
        "InsertSslPolicyRequest",
        "InsertSubnetworkRequest",
        "InsertTargetGrpcProxyRequest",
        "InsertTargetHttpProxyRequest",
        "InsertTargetHttpsProxyRequest",
        "InsertTargetInstanceRequest",
        "InsertTargetPoolRequest",
        "InsertTargetSslProxyRequest",
        "InsertTargetTcpProxyRequest",
        "InsertTargetVpnGatewayRequest",
        "InsertUrlMapRequest",
        "InsertVpnGatewayRequest",
        "InsertVpnTunnelRequest",
        "Instance",
        "InstanceAggregatedList",
        "InstanceConsumptionData",
        "InstanceConsumptionInfo",
        "InstanceGroup",
        "InstanceGroupAggregatedList",
        "InstanceGroupList",
        "InstanceGroupManager",
        "InstanceGroupManagerActionsSummary",
        "InstanceGroupManagerAggregatedList",
        "InstanceGroupManagerAutoHealingPolicy",
        "InstanceGroupManagerList",
        "InstanceGroupManagerStatus",
        "InstanceGroupManagerStatusStateful",
        "InstanceGroupManagerStatusStatefulPerInstanceConfigs",
        "InstanceGroupManagerStatusVersionTarget",
        "InstanceGroupManagerUpdatePolicy",
        "InstanceGroupManagerVersion",
        "InstanceGroupManagersAbandonInstancesRequest",
        "InstanceGroupManagersApplyUpdatesRequest",
        "InstanceGroupManagersCreateInstancesRequest",
        "InstanceGroupManagersDeleteInstancesRequest",
        "InstanceGroupManagersDeletePerInstanceConfigsReq",
        "InstanceGroupManagersListErrorsResponse",
        "InstanceGroupManagersListManagedInstancesResponse",
        "InstanceGroupManagersListPerInstanceConfigsResp",
        "InstanceGroupManagersPatchPerInstanceConfigsReq",
        "InstanceGroupManagersRecreateInstancesRequest",
        "InstanceGroupManagersScopedList",
        "InstanceGroupManagersSetInstanceTemplateRequest",
        "InstanceGroupManagersSetTargetPoolsRequest",
        "InstanceGroupManagersUpdatePerInstanceConfigsReq",
        "InstanceGroupsAddInstancesRequest",
        "InstanceGroupsListInstances",
        "InstanceGroupsListInstancesRequest",
        "InstanceGroupsRemoveInstancesRequest",
        "InstanceGroupsScopedList",
        "InstanceGroupsSetNamedPortsRequest",
        "InstanceList",
        "InstanceListReferrers",
        "InstanceManagedByIgmError",
        "InstanceManagedByIgmErrorInstanceActionDetails",
        "InstanceManagedByIgmErrorManagedInstanceError",
        "InstanceMoveRequest",
        "InstanceParams",
        "InstanceProperties",
        "InstanceReference",
        "InstanceTemplate",
        "InstanceTemplateAggregatedList",
        "InstanceTemplateList",
        "InstanceTemplatesScopedList",
        "InstanceWithNamedPorts",
        "InstancesAddResourcePoliciesRequest",
        "InstancesGetEffectiveFirewallsResponse",
        "InstancesGetEffectiveFirewallsResponseEffectiveFirewallPolicy",
        "InstancesRemoveResourcePoliciesRequest",
        "InstancesScopedList",
        "InstancesSetLabelsRequest",
        "InstancesSetMachineResourcesRequest",
        "InstancesSetMachineTypeRequest",
        "InstancesSetMinCpuPlatformRequest",
        "InstancesSetNameRequest",
        "InstancesSetServiceAccountRequest",
        "InstancesStartWithEncryptionKeyRequest",
        "Int64RangeMatch",
        "Interconnect",
        "InterconnectAttachment",
        "InterconnectAttachmentAggregatedList",
        "InterconnectAttachmentList",
        "InterconnectAttachmentPartnerMetadata",
        "InterconnectAttachmentPrivateInfo",
        "InterconnectAttachmentsScopedList",
        "InterconnectCircuitInfo",
        "InterconnectDiagnostics",
        "InterconnectDiagnosticsARPEntry",
        "InterconnectDiagnosticsLinkLACPStatus",
        "InterconnectDiagnosticsLinkOpticalPower",
        "InterconnectDiagnosticsLinkStatus",
        "InterconnectList",
        "InterconnectLocation",
        "InterconnectLocationList",
        "InterconnectLocationRegionInfo",
        "InterconnectOutageNotification",
        "InterconnectsGetDiagnosticsResponse",
        "InvalidateCacheUrlMapRequest",
        "Items",
        "License",
        "LicenseCode",
        "LicenseCodeLicenseAlias",
        "LicenseResourceCommitment",
        "LicenseResourceRequirements",
        "LicensesListResponse",
        "ListAcceleratorTypesRequest",
        "ListAddressesRequest",
        "ListAssociationsFirewallPolicyRequest",
        "ListAutoscalersRequest",
        "ListAvailableFeaturesRegionSslPoliciesRequest",
        "ListAvailableFeaturesSslPoliciesRequest",
        "ListBackendBucketsRequest",
        "ListBackendServicesRequest",
        "ListDiskTypesRequest",
        "ListDisksRequest",
        "ListErrorsInstanceGroupManagersRequest",
        "ListErrorsRegionInstanceGroupManagersRequest",
        "ListExternalVpnGatewaysRequest",
        "ListFirewallPoliciesRequest",
        "ListFirewallsRequest",
        "ListForwardingRulesRequest",
        "ListGlobalAddressesRequest",
        "ListGlobalForwardingRulesRequest",
        "ListGlobalNetworkEndpointGroupsRequest",
        "ListGlobalOperationsRequest",
        "ListGlobalOrganizationOperationsRequest",
        "ListGlobalPublicDelegatedPrefixesRequest",
        "ListHealthChecksRequest",
        "ListImagesRequest",
        "ListInstanceGroupManagersRequest",
        "ListInstanceGroupsRequest",
        "ListInstanceTemplatesRequest",
        "ListInstancesInstanceGroupsRequest",
        "ListInstancesRegionInstanceGroupsRequest",
        "ListInstancesRequest",
        "ListInterconnectAttachmentsRequest",
        "ListInterconnectLocationsRequest",
        "ListInterconnectsRequest",
        "ListLicensesRequest",
        "ListMachineImagesRequest",
        "ListMachineTypesRequest",
        "ListManagedInstancesInstanceGroupManagersRequest",
        "ListManagedInstancesRegionInstanceGroupManagersRequest",
        "ListNetworkAttachmentsRequest",
        "ListNetworkEndpointGroupsRequest",
        "ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest",
        "ListNetworkEndpointsNetworkEndpointGroupsRequest",
        "ListNetworkFirewallPoliciesRequest",
        "ListNetworksRequest",
        "ListNodeGroupsRequest",
        "ListNodeTemplatesRequest",
        "ListNodeTypesRequest",
        "ListNodesNodeGroupsRequest",
        "ListPacketMirroringsRequest",
        "ListPeeringRoutesNetworksRequest",
        "ListPerInstanceConfigsInstanceGroupManagersRequest",
        "ListPerInstanceConfigsRegionInstanceGroupManagersRequest",
        "ListPreconfiguredExpressionSetsSecurityPoliciesRequest",
        "ListPublicAdvertisedPrefixesRequest",
        "ListPublicDelegatedPrefixesRequest",
        "ListReferrersInstancesRequest",
        "ListRegionAutoscalersRequest",
        "ListRegionBackendServicesRequest",
        "ListRegionCommitmentsRequest",
        "ListRegionDiskTypesRequest",
        "ListRegionDisksRequest",
        "ListRegionHealthCheckServicesRequest",
        "ListRegionHealthChecksRequest",
        "ListRegionInstanceGroupManagersRequest",
        "ListRegionInstanceGroupsRequest",
        "ListRegionInstanceTemplatesRequest",
        "ListRegionNetworkEndpointGroupsRequest",
        "ListRegionNetworkFirewallPoliciesRequest",
        "ListRegionNotificationEndpointsRequest",
        "ListRegionOperationsRequest",
        "ListRegionSecurityPoliciesRequest",
        "ListRegionSslCertificatesRequest",
        "ListRegionSslPoliciesRequest",
        "ListRegionTargetHttpProxiesRequest",
        "ListRegionTargetHttpsProxiesRequest",
        "ListRegionTargetTcpProxiesRequest",
        "ListRegionUrlMapsRequest",
        "ListRegionsRequest",
        "ListReservationsRequest",
        "ListResourcePoliciesRequest",
        "ListRoutersRequest",
        "ListRoutesRequest",
        "ListSecurityPoliciesRequest",
        "ListServiceAttachmentsRequest",
        "ListSnapshotsRequest",
        "ListSslCertificatesRequest",
        "ListSslPoliciesRequest",
        "ListSubnetworksRequest",
        "ListTargetGrpcProxiesRequest",
        "ListTargetHttpProxiesRequest",
        "ListTargetHttpsProxiesRequest",
        "ListTargetInstancesRequest",
        "ListTargetPoolsRequest",
        "ListTargetSslProxiesRequest",
        "ListTargetTcpProxiesRequest",
        "ListTargetVpnGatewaysRequest",
        "ListUrlMapsRequest",
        "ListUsableSubnetworksRequest",
        "ListVpnGatewaysRequest",
        "ListVpnTunnelsRequest",
        "ListXpnHostsProjectsRequest",
        "ListZoneOperationsRequest",
        "ListZonesRequest",
        "LocalDisk",
        "LocalizedMessage",
        "LocationPolicy",
        "LocationPolicyLocation",
        "LocationPolicyLocationConstraints",
        "LogConfig",
        "LogConfigCloudAuditOptions",
        "LogConfigCounterOptions",
        "LogConfigCounterOptionsCustomField",
        "LogConfigDataAccessOptions",
        "MachineImage",
        "MachineImageList",
        "MachineType",
        "MachineTypeAggregatedList",
        "MachineTypeList",
        "MachineTypesScopedList",
        "ManagedInstance",
        "ManagedInstanceInstanceHealth",
        "ManagedInstanceLastAttempt",
        "ManagedInstanceVersion",
        "Metadata",
        "MetadataFilter",
        "MetadataFilterLabelMatch",
        "MoveDiskProjectRequest",
        "MoveFirewallPolicyRequest",
        "MoveInstanceProjectRequest",
        "NamedPort",
        "Network",
        "NetworkAttachment",
        "NetworkAttachmentAggregatedList",
        "NetworkAttachmentConnectedEndpoint",
        "NetworkAttachmentList",
        "NetworkAttachmentsScopedList",
        "NetworkEdgeSecurityService",
        "NetworkEdgeSecurityServiceAggregatedList",
        "NetworkEdgeSecurityServicesScopedList",
        "NetworkEndpoint",
        "NetworkEndpointGroup",
        "NetworkEndpointGroupAggregatedList",
        "NetworkEndpointGroupAppEngine",
        "NetworkEndpointGroupCloudFunction",
        "NetworkEndpointGroupCloudRun",
        "NetworkEndpointGroupList",
        "NetworkEndpointGroupPscData",
        "NetworkEndpointGroupsAttachEndpointsRequest",
        "NetworkEndpointGroupsDetachEndpointsRequest",
        "NetworkEndpointGroupsListEndpointsRequest",
        "NetworkEndpointGroupsListNetworkEndpoints",
        "NetworkEndpointGroupsScopedList",
        "NetworkEndpointWithHealthStatus",
        "NetworkInterface",
        "NetworkList",
        "NetworkPeering",
        "NetworkPerformanceConfig",
        "NetworkRoutingConfig",
        "NetworksAddPeeringRequest",
        "NetworksGetEffectiveFirewallsResponse",
        "NetworksGetEffectiveFirewallsResponseEffectiveFirewallPolicy",
        "NetworksRemovePeeringRequest",
        "NetworksUpdatePeeringRequest",
        "NodeGroup",
        "NodeGroupAggregatedList",
        "NodeGroupAutoscalingPolicy",
        "NodeGroupList",
        "NodeGroupMaintenanceWindow",
        "NodeGroupNode",
        "NodeGroupsAddNodesRequest",
        "NodeGroupsDeleteNodesRequest",
        "NodeGroupsListNodes",
        "NodeGroupsScopedList",
        "NodeGroupsSetNodeTemplateRequest",
        "NodeGroupsSimulateMaintenanceEventRequest",
        "NodeTemplate",
        "NodeTemplateAggregatedList",
        "NodeTemplateList",
        "NodeTemplateNodeTypeFlexibility",
        "NodeTemplatesScopedList",
        "NodeType",
        "NodeTypeAggregatedList",
        "NodeTypeList",
        "NodeTypesScopedList",
        "NotificationEndpoint",
        "NotificationEndpointGrpcSettings",
        "NotificationEndpointList",
        "Operation",
        "OperationAggregatedList",
        "OperationList",
        "OperationsScopedList",
        "OutlierDetection",
        "PacketIntervals",
        "PacketMirroring",
        "PacketMirroringAggregatedList",
        "PacketMirroringFilter",
        "PacketMirroringForwardingRuleInfo",
        "PacketMirroringList",
        "PacketMirroringMirroredResourceInfo",
        "PacketMirroringMirroredResourceInfoInstanceInfo",
        "PacketMirroringMirroredResourceInfoSubnetInfo",
        "PacketMirroringNetworkInfo",
        "PacketMirroringsScopedList",
        "PatchAutoscalerRequest",
        "PatchBackendBucketRequest",
        "PatchBackendServiceRequest",
        "PatchFirewallPolicyRequest",
        "PatchFirewallRequest",
        "PatchForwardingRuleRequest",
        "PatchGlobalForwardingRuleRequest",
        "PatchGlobalPublicDelegatedPrefixeRequest",
        "PatchHealthCheckRequest",
        "PatchImageRequest",
        "PatchInstanceGroupManagerRequest",
        "PatchInterconnectAttachmentRequest",
        "PatchInterconnectRequest",
        "PatchNetworkEdgeSecurityServiceRequest",
        "PatchNetworkFirewallPolicyRequest",
        "PatchNetworkRequest",
        "PatchNodeGroupRequest",
        "PatchPacketMirroringRequest",
        "PatchPerInstanceConfigsInstanceGroupManagerRequest",
        "PatchPerInstanceConfigsRegionInstanceGroupManagerRequest",
        "PatchPublicAdvertisedPrefixeRequest",
        "PatchPublicDelegatedPrefixeRequest",
        "PatchRegionAutoscalerRequest",
        "PatchRegionBackendServiceRequest",
        "PatchRegionHealthCheckRequest",
        "PatchRegionHealthCheckServiceRequest",
        "PatchRegionInstanceGroupManagerRequest",
        "PatchRegionNetworkFirewallPolicyRequest",
        "PatchRegionSecurityPolicyRequest",
        "PatchRegionSslPolicyRequest",
        "PatchRegionTargetHttpsProxyRequest",
        "PatchRegionUrlMapRequest",
        "PatchRouterRequest",
        "PatchRuleFirewallPolicyRequest",
        "PatchRuleNetworkFirewallPolicyRequest",
        "PatchRuleRegionNetworkFirewallPolicyRequest",
        "PatchRuleSecurityPolicyRequest",
        "PatchSecurityPolicyRequest",
        "PatchServiceAttachmentRequest",
        "PatchSslPolicyRequest",
        "PatchSubnetworkRequest",
        "PatchTargetGrpcProxyRequest",
        "PatchTargetHttpProxyRequest",
        "PatchTargetHttpsProxyRequest",
        "PatchUrlMapRequest",
        "PathMatcher",
        "PathRule",
        "PerInstanceConfig",
        "Policy",
        "PreconfiguredWafSet",
        "PreservedState",
        "PreservedStatePreservedDisk",
        "PreviewRouterRequest",
        "Project",
        "ProjectsDisableXpnResourceRequest",
        "ProjectsEnableXpnResourceRequest",
        "ProjectsGetXpnResources",
        "ProjectsListXpnHostsRequest",
        "ProjectsSetDefaultNetworkTierRequest",
        "PublicAdvertisedPrefix",
        "PublicAdvertisedPrefixList",
        "PublicAdvertisedPrefixPublicDelegatedPrefix",
        "PublicDelegatedPrefix",
        "PublicDelegatedPrefixAggregatedList",
        "PublicDelegatedPrefixList",
        "PublicDelegatedPrefixPublicDelegatedSubPrefix",
        "PublicDelegatedPrefixesScopedList",
        "Quota",
        "QuotaExceededInfo",
        "RawDisk",
        "RecreateInstancesInstanceGroupManagerRequest",
        "RecreateInstancesRegionInstanceGroupManagerRequest",
        "Reference",
        "Region",
        "RegionAutoscalerList",
        "RegionDiskTypeList",
        "RegionDisksAddResourcePoliciesRequest",
        "RegionDisksRemoveResourcePoliciesRequest",
        "RegionDisksResizeRequest",
        "RegionInstanceGroupList",
        "RegionInstanceGroupManagerDeleteInstanceConfigReq",
        "RegionInstanceGroupManagerList",
        "RegionInstanceGroupManagerPatchInstanceConfigReq",
        "RegionInstanceGroupManagerUpdateInstanceConfigReq",
        "RegionInstanceGroupManagersAbandonInstancesRequest",
        "RegionInstanceGroupManagersApplyUpdatesRequest",
        "RegionInstanceGroupManagersCreateInstancesRequest",
        "RegionInstanceGroupManagersDeleteInstancesRequest",
        "RegionInstanceGroupManagersListErrorsResponse",
        "RegionInstanceGroupManagersListInstanceConfigsResp",
        "RegionInstanceGroupManagersListInstancesResponse",
        "RegionInstanceGroupManagersRecreateRequest",
        "RegionInstanceGroupManagersSetTargetPoolsRequest",
        "RegionInstanceGroupManagersSetTemplateRequest",
        "RegionInstanceGroupsListInstances",
        "RegionInstanceGroupsListInstancesRequest",
        "RegionInstanceGroupsSetNamedPortsRequest",
        "RegionList",
        "RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse",
        "RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponseEffectiveFirewallPolicy",
        "RegionSetLabelsRequest",
        "RegionSetPolicyRequest",
        "RegionTargetHttpsProxiesSetSslCertificatesRequest",
        "RegionUrlMapsValidateRequest",
        "RemoveAssociationFirewallPolicyRequest",
        "RemoveAssociationNetworkFirewallPolicyRequest",
        "RemoveAssociationRegionNetworkFirewallPolicyRequest",
        "RemoveHealthCheckTargetPoolRequest",
        "RemoveInstanceTargetPoolRequest",
        "RemoveInstancesInstanceGroupRequest",
        "RemovePeeringNetworkRequest",
        "RemoveResourcePoliciesDiskRequest",
        "RemoveResourcePoliciesInstanceRequest",
        "RemoveResourcePoliciesRegionDiskRequest",
        "RemoveRuleFirewallPolicyRequest",
        "RemoveRuleNetworkFirewallPolicyRequest",
        "RemoveRuleRegionNetworkFirewallPolicyRequest",
        "RemoveRuleSecurityPolicyRequest",
        "RequestMirrorPolicy",
        "Reservation",
        "ReservationAffinity",
        "ReservationAggregatedList",
        "ReservationList",
        "ReservationsResizeRequest",
        "ReservationsScopedList",
        "ResetInstanceRequest",
        "ResizeDiskRequest",
        "ResizeInstanceGroupManagerRequest",
        "ResizeRegionDiskRequest",
        "ResizeRegionInstanceGroupManagerRequest",
        "ResizeReservationRequest",
        "ResourceCommitment",
        "ResourceGroupReference",
        "ResourcePoliciesScopedList",
        "ResourcePolicy",
        "ResourcePolicyAggregatedList",
        "ResourcePolicyDailyCycle",
        "ResourcePolicyGroupPlacementPolicy",
        "ResourcePolicyHourlyCycle",
        "ResourcePolicyInstanceSchedulePolicy",
        "ResourcePolicyInstanceSchedulePolicySchedule",
        "ResourcePolicyList",
        "ResourcePolicyResourceStatus",
        "ResourcePolicyResourceStatusInstanceSchedulePolicyStatus",
        "ResourcePolicySnapshotSchedulePolicy",
        "ResourcePolicySnapshotSchedulePolicyRetentionPolicy",
        "ResourcePolicySnapshotSchedulePolicySchedule",
        "ResourcePolicySnapshotSchedulePolicySnapshotProperties",
        "ResourcePolicyWeeklyCycle",
        "ResourcePolicyWeeklyCycleDayOfWeek",
        "ResourceStatus",
        "ResumeInstanceRequest",
        "Route",
        "RouteAsPath",
        "RouteList",
        "Router",
        "RouterAdvertisedIpRange",
        "RouterAggregatedList",
        "RouterBgp",
        "RouterBgpPeer",
        "RouterBgpPeerBfd",
        "RouterInterface",
        "RouterList",
        "RouterMd5AuthenticationKey",
        "RouterNat",
        "RouterNatLogConfig",
        "RouterNatRule",
        "RouterNatRuleAction",
        "RouterNatSubnetworkToNat",
        "RouterStatus",
        "RouterStatusBgpPeerStatus",
        "RouterStatusNatStatus",
        "RouterStatusNatStatusNatRuleStatus",
        "RouterStatusResponse",
        "RoutersPreviewResponse",
        "RoutersScopedList",
        "Rule",
        "SSLHealthCheck",
        "SavedAttachedDisk",
        "SavedDisk",
        "ScalingScheduleStatus",
        "Scheduling",
        "SchedulingNodeAffinity",
        "ScratchDisks",
        "Screenshot",
        "SecurityPoliciesAggregatedList",
        "SecurityPoliciesListPreconfiguredExpressionSetsResponse",
        "SecurityPoliciesScopedList",
        "SecurityPoliciesWafConfig",
        "SecurityPolicy",
        "SecurityPolicyAdaptiveProtectionConfig",
        "SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig",
        "SecurityPolicyAdvancedOptionsConfig",
        "SecurityPolicyAdvancedOptionsConfigJsonCustomConfig",
        "SecurityPolicyDdosProtectionConfig",
        "SecurityPolicyList",
        "SecurityPolicyRecaptchaOptionsConfig",
        "SecurityPolicyReference",
        "SecurityPolicyRule",
        "SecurityPolicyRuleHttpHeaderAction",
        "SecurityPolicyRuleHttpHeaderActionHttpHeaderOption",
        "SecurityPolicyRuleMatcher",
        "SecurityPolicyRuleMatcherConfig",
        "SecurityPolicyRulePreconfiguredWafConfig",
        "SecurityPolicyRulePreconfiguredWafConfigExclusion",
        "SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams",
        "SecurityPolicyRuleRateLimitOptions",
        "SecurityPolicyRuleRateLimitOptionsThreshold",
        "SecurityPolicyRuleRedirectOptions",
        "SecuritySettings",
        "SendDiagnosticInterruptInstanceRequest",
        "SendDiagnosticInterruptInstanceResponse",
        "SerialPortOutput",
        "ServerBinding",
        "ServiceAccount",
        "ServiceAttachment",
        "ServiceAttachmentAggregatedList",
        "ServiceAttachmentConnectedEndpoint",
        "ServiceAttachmentConsumerProjectLimit",
        "ServiceAttachmentList",
        "ServiceAttachmentsScopedList",
        "SetBackendServiceTargetSslProxyRequest",
        "SetBackendServiceTargetTcpProxyRequest",
        "SetBackupTargetPoolRequest",
        "SetCertificateMapTargetHttpsProxyRequest",
        "SetCertificateMapTargetSslProxyRequest",
        "SetCommonInstanceMetadataProjectRequest",
        "SetDefaultNetworkTierProjectRequest",
        "SetDeletionProtectionInstanceRequest",
        "SetDiskAutoDeleteInstanceRequest",
        "SetEdgeSecurityPolicyBackendBucketRequest",
        "SetEdgeSecurityPolicyBackendServiceRequest",
        "SetIamPolicyBackendServiceRequest",
        "SetIamPolicyDiskRequest",
        "SetIamPolicyFirewallPolicyRequest",
        "SetIamPolicyImageRequest",
        "SetIamPolicyInstanceRequest",
        "SetIamPolicyInstanceTemplateRequest",
        "SetIamPolicyLicenseRequest",
        "SetIamPolicyMachineImageRequest",
        "SetIamPolicyNetworkAttachmentRequest",
        "SetIamPolicyNetworkFirewallPolicyRequest",
        "SetIamPolicyNodeGroupRequest",
        "SetIamPolicyNodeTemplateRequest",
        "SetIamPolicyRegionBackendServiceRequest",
        "SetIamPolicyRegionDiskRequest",
        "SetIamPolicyRegionNetworkFirewallPolicyRequest",
        "SetIamPolicyReservationRequest",
        "SetIamPolicyResourcePolicyRequest",
        "SetIamPolicyServiceAttachmentRequest",
        "SetIamPolicySnapshotRequest",
        "SetIamPolicySubnetworkRequest",
        "SetInstanceTemplateInstanceGroupManagerRequest",
        "SetInstanceTemplateRegionInstanceGroupManagerRequest",
        "SetLabelsAddressRequest",
        "SetLabelsDiskRequest",
        "SetLabelsExternalVpnGatewayRequest",
        "SetLabelsForwardingRuleRequest",
        "SetLabelsGlobalAddressRequest",
        "SetLabelsGlobalForwardingRuleRequest",
        "SetLabelsImageRequest",
        "SetLabelsInstanceRequest",
        "SetLabelsInterconnectAttachmentRequest",
        "SetLabelsInterconnectRequest",
        "SetLabelsRegionDiskRequest",
        "SetLabelsSecurityPolicyRequest",
        "SetLabelsSnapshotRequest",
        "SetLabelsTargetVpnGatewayRequest",
        "SetLabelsVpnGatewayRequest",
        "SetLabelsVpnTunnelRequest",
        "SetMachineResourcesInstanceRequest",
        "SetMachineTypeInstanceRequest",
        "SetMetadataInstanceRequest",
        "SetMinCpuPlatformInstanceRequest",
        "SetNameInstanceRequest",
        "SetNamedPortsInstanceGroupRequest",
        "SetNamedPortsRegionInstanceGroupRequest",
        "SetNodeTemplateNodeGroupRequest",
        "SetPrivateIpGoogleAccessSubnetworkRequest",
        "SetProxyHeaderTargetSslProxyRequest",
        "SetProxyHeaderTargetTcpProxyRequest",
        "SetQuicOverrideTargetHttpsProxyRequest",
        "SetSchedulingInstanceRequest",
        "SetSecurityPolicyBackendServiceRequest",
        "SetServiceAccountInstanceRequest",
        "SetShieldedInstanceIntegrityPolicyInstanceRequest",
        "SetSslCertificatesRegionTargetHttpsProxyRequest",
        "SetSslCertificatesTargetHttpsProxyRequest",
        "SetSslCertificatesTargetSslProxyRequest",
        "SetSslPolicyTargetHttpsProxyRequest",
        "SetSslPolicyTargetSslProxyRequest",
        "SetTagsInstanceRequest",
        "SetTargetForwardingRuleRequest",
        "SetTargetGlobalForwardingRuleRequest",
        "SetTargetPoolsInstanceGroupManagerRequest",
        "SetTargetPoolsRegionInstanceGroupManagerRequest",
        "SetUrlMapRegionTargetHttpProxyRequest",
        "SetUrlMapRegionTargetHttpsProxyRequest",
        "SetUrlMapTargetHttpProxyRequest",
        "SetUrlMapTargetHttpsProxyRequest",
        "SetUsageExportBucketProjectRequest",
        "ShareSettings",
        "ShareSettingsProjectConfig",
        "ShieldedInstanceConfig",
        "ShieldedInstanceIdentity",
        "ShieldedInstanceIdentityEntry",
        "ShieldedInstanceIntegrityPolicy",
        "SignedUrlKey",
        "SimulateMaintenanceEventInstanceRequest",
        "SimulateMaintenanceEventNodeGroupRequest",
        "Snapshot",
        "SnapshotList",
        "SourceDiskEncryptionKey",
        "SourceInstanceParams",
        "SourceInstanceProperties",
        "SslCertificate",
        "SslCertificateAggregatedList",
        "SslCertificateList",
        "SslCertificateManagedSslCertificate",
        "SslCertificateSelfManagedSslCertificate",
        "SslCertificatesScopedList",
        "SslPoliciesAggregatedList",
        "SslPoliciesList",
        "SslPoliciesListAvailableFeaturesResponse",
        "SslPoliciesScopedList",
        "SslPolicy",
        "SslPolicyReference",
        "StartInstanceRequest",
        "StartWithEncryptionKeyInstanceRequest",
        "StatefulPolicy",
        "StatefulPolicyPreservedState",
        "StatefulPolicyPreservedStateDiskDevice",
        "StopInstanceRequest",
        "Subnetwork",
        "SubnetworkAggregatedList",
        "SubnetworkList",
        "SubnetworkLogConfig",
        "SubnetworkSecondaryRange",
        "SubnetworksExpandIpCidrRangeRequest",
        "SubnetworksScopedList",
        "SubnetworksSetPrivateIpGoogleAccessRequest",
        "Subsetting",
        "SuspendInstanceRequest",
        "SwitchToCustomModeNetworkRequest",
        "TCPHealthCheck",
        "Tags",
        "TargetGrpcProxy",
        "TargetGrpcProxyList",
        "TargetHttpProxiesScopedList",
        "TargetHttpProxy",
        "TargetHttpProxyAggregatedList",
        "TargetHttpProxyList",
        "TargetHttpsProxiesScopedList",
        "TargetHttpsProxiesSetCertificateMapRequest",
        "TargetHttpsProxiesSetQuicOverrideRequest",
        "TargetHttpsProxiesSetSslCertificatesRequest",
        "TargetHttpsProxy",
        "TargetHttpsProxyAggregatedList",
        "TargetHttpsProxyList",
        "TargetInstance",
        "TargetInstanceAggregatedList",
        "TargetInstanceList",
        "TargetInstancesScopedList",
        "TargetPool",
        "TargetPoolAggregatedList",
        "TargetPoolInstanceHealth",
        "TargetPoolList",
        "TargetPoolsAddHealthCheckRequest",
        "TargetPoolsAddInstanceRequest",
        "TargetPoolsRemoveHealthCheckRequest",
        "TargetPoolsRemoveInstanceRequest",
        "TargetPoolsScopedList",
        "TargetReference",
        "TargetSslProxiesSetBackendServiceRequest",
        "TargetSslProxiesSetCertificateMapRequest",
        "TargetSslProxiesSetProxyHeaderRequest",
        "TargetSslProxiesSetSslCertificatesRequest",
        "TargetSslProxy",
        "TargetSslProxyList",
        "TargetTcpProxiesScopedList",
        "TargetTcpProxiesSetBackendServiceRequest",
        "TargetTcpProxiesSetProxyHeaderRequest",
        "TargetTcpProxy",
        "TargetTcpProxyAggregatedList",
        "TargetTcpProxyList",
        "TargetVpnGateway",
        "TargetVpnGatewayAggregatedList",
        "TargetVpnGatewayList",
        "TargetVpnGatewaysScopedList",
        "TestFailure",
        "TestIamPermissionsDiskRequest",
        "TestIamPermissionsExternalVpnGatewayRequest",
        "TestIamPermissionsFirewallPolicyRequest",
        "TestIamPermissionsImageRequest",
        "TestIamPermissionsInstanceRequest",
        "TestIamPermissionsInstanceTemplateRequest",
        "TestIamPermissionsLicenseCodeRequest",
        "TestIamPermissionsLicenseRequest",
        "TestIamPermissionsMachineImageRequest",
        "TestIamPermissionsNetworkAttachmentRequest",
        "TestIamPermissionsNetworkEndpointGroupRequest",
        "TestIamPermissionsNetworkFirewallPolicyRequest",
        "TestIamPermissionsNodeGroupRequest",
        "TestIamPermissionsNodeTemplateRequest",
        "TestIamPermissionsPacketMirroringRequest",
        "TestIamPermissionsRegionDiskRequest",
        "TestIamPermissionsRegionNetworkFirewallPolicyRequest",
        "TestIamPermissionsReservationRequest",
        "TestIamPermissionsResourcePolicyRequest",
        "TestIamPermissionsServiceAttachmentRequest",
        "TestIamPermissionsSnapshotRequest",
        "TestIamPermissionsSubnetworkRequest",
        "TestIamPermissionsVpnGatewayRequest",
        "TestPermissionsRequest",
        "TestPermissionsResponse",
        "Uint128",
        "UpdateAccessConfigInstanceRequest",
        "UpdateAutoscalerRequest",
        "UpdateBackendBucketRequest",
        "UpdateBackendServiceRequest",
        "UpdateDiskRequest",
        "UpdateDisplayDeviceInstanceRequest",
        "UpdateFirewallRequest",
        "UpdateHealthCheckRequest",
        "UpdateInstanceRequest",
        "UpdateNetworkInterfaceInstanceRequest",
        "UpdatePeeringNetworkRequest",
        "UpdatePerInstanceConfigsInstanceGroupManagerRequest",
        "UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest",
        "UpdateRegionAutoscalerRequest",
        "UpdateRegionBackendServiceRequest",
        "UpdateRegionCommitmentRequest",
        "UpdateRegionDiskRequest",
        "UpdateRegionHealthCheckRequest",
        "UpdateRegionUrlMapRequest",
        "UpdateReservationRequest",
        "UpdateRouterRequest",
        "UpdateShieldedInstanceConfigInstanceRequest",
        "UpdateUrlMapRequest",
        "UrlMap",
        "UrlMapList",
        "UrlMapReference",
        "UrlMapTest",
        "UrlMapTestHeader",
        "UrlMapValidationResult",
        "UrlMapsAggregatedList",
        "UrlMapsScopedList",
        "UrlMapsValidateRequest",
        "UrlMapsValidateResponse",
        "UrlRewrite",
        "UsableSubnetwork",
        "UsableSubnetworkSecondaryRange",
        "UsableSubnetworksAggregatedList",
        "UsageExportLocation",
        "ValidateRegionUrlMapRequest",
        "ValidateUrlMapRequest",
        "VmEndpointNatMappings",
        "VmEndpointNatMappingsInterfaceNatMappings",
        "VmEndpointNatMappingsInterfaceNatMappingsNatRuleMappings",
        "VmEndpointNatMappingsList",
        "VpnGateway",
        "VpnGatewayAggregatedList",
        "VpnGatewayList",
        "VpnGatewayStatus",
        "VpnGatewayStatusHighAvailabilityRequirementState",
        "VpnGatewayStatusTunnel",
        "VpnGatewayStatusVpnConnection",
        "VpnGatewayVpnGatewayInterface",
        "VpnGatewaysGetStatusResponse",
        "VpnGatewaysScopedList",
        "VpnTunnel",
        "VpnTunnelAggregatedList",
        "VpnTunnelList",
        "VpnTunnelsScopedList",
        "WafExpressionSet",
        "WafExpressionSetExpression",
        "WaitGlobalOperationRequest",
        "WaitRegionOperationRequest",
        "WaitZoneOperationRequest",
        "Warning",
        "Warnings",
        "WeightedBackendService",
        "XpnHostList",
        "XpnResourceId",
        "Zone",
        "ZoneList",
        "ZoneSetLabelsRequest",
        "ZoneSetPolicyRequest",
    },
)


class AbandonInstancesInstanceGroupManagerRequest(proto.Message):
    r"""Messages
    A request message for InstanceGroupManagers.AbandonInstances.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group.
        instance_group_managers_abandon_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersAbandonInstancesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_abandon_instances_request_resource: "InstanceGroupManagersAbandonInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=320929016,
        message="InstanceGroupManagersAbandonInstancesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class AbandonInstancesRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.AbandonInstances. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            Name of the managed instance group.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        region_instance_group_managers_abandon_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersAbandonInstancesRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_managers_abandon_instances_request_resource: "RegionInstanceGroupManagersAbandonInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=488499491,
        message="RegionInstanceGroupManagersAbandonInstancesRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AcceleratorConfig(proto.Message):
    r"""A specification of the type and number of accelerator cards
    attached to the instance.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        accelerator_count (int):
            The number of the guest accelerator cards
            exposed to this instance.

            This field is a member of `oneof`_ ``_accelerator_count``.
        accelerator_type (str):
            Full or partial URL of the accelerator type
            resource to attach to this instance. For
            example:
            projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100
            If you are creating an instance template,
            specify only the accelerator name. See GPUs on
            Compute Engine for a full list of accelerator
            types.

            This field is a member of `oneof`_ ``_accelerator_type``.
    """

    accelerator_count: int = proto.Field(
        proto.INT32,
        number=504879675,
        optional=True,
    )
    accelerator_type: str = proto.Field(
        proto.STRING,
        number=138031246,
        optional=True,
    )


class AcceleratorType(proto.Message):
    r"""Represents an Accelerator Type resource. Google Cloud
    Platform provides graphics processing units (accelerators) that
    you can add to VM instances to improve or accelerate performance
    when working with intensive workloads. For more information,
    read GPUs on Compute Engine.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        deprecated (google.cloud.compute_v1.types.DeprecationStatus):
            [Output Only] The deprecation status associated with this
            accelerator type.

            This field is a member of `oneof`_ ``_deprecated``.
        description (str):
            [Output Only] An optional textual description of the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] The type of the resource. Always
            compute#acceleratorType for accelerator types.

            This field is a member of `oneof`_ ``_kind``.
        maximum_cards_per_instance (int):
            [Output Only] Maximum number of accelerator cards allowed
            per instance.

            This field is a member of `oneof`_ ``_maximum_cards_per_instance``.
        name (str):
            [Output Only] Name of the resource.

            This field is a member of `oneof`_ ``_name``.
        self_link (str):
            [Output Only] Server-defined, fully qualified URL for this
            resource.

            This field is a member of `oneof`_ ``_self_link``.
        zone (str):
            [Output Only] The name of the zone where the accelerator
            type resides, such as us-central1-a. You must specify this
            field as part of the HTTP request URL. It is not settable as
            a field in the request body.

            This field is a member of `oneof`_ ``_zone``.
    """

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    deprecated: "DeprecationStatus" = proto.Field(
        proto.MESSAGE,
        number=515138995,
        optional=True,
        message="DeprecationStatus",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    maximum_cards_per_instance: int = proto.Field(
        proto.INT32,
        number=263814482,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class AcceleratorTypeAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.AcceleratorTypesScopedList]):
            A list of AcceleratorTypesScopedList
            resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#acceleratorTypeAggregatedList for aggregated lists
            of accelerator types.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "AcceleratorTypesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="AcceleratorTypesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class AcceleratorTypeList(proto.Message):
    r"""Contains a list of accelerator types.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.AcceleratorType]):
            A list of AcceleratorType resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#acceleratorTypeList for lists of accelerator types.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["AcceleratorType"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="AcceleratorType",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class AcceleratorTypesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        accelerator_types (MutableSequence[google.cloud.compute_v1.types.AcceleratorType]):
            [Output Only] A list of accelerator types contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] An informational warning that appears when the
            accelerator types list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    accelerator_types: MutableSequence["AcceleratorType"] = proto.RepeatedField(
        proto.MESSAGE,
        number=520872357,
        message="AcceleratorType",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class Accelerators(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        guest_accelerator_count (int):
            Number of accelerator cards exposed to the
            guest.

            This field is a member of `oneof`_ ``_guest_accelerator_count``.
        guest_accelerator_type (str):
            The accelerator type resource name, not a
            full URL, e.g. 'nvidia-tesla-k80'.

            This field is a member of `oneof`_ ``_guest_accelerator_type``.
    """

    guest_accelerator_count: int = proto.Field(
        proto.INT32,
        number=479079316,
        optional=True,
    )
    guest_accelerator_type: str = proto.Field(
        proto.STRING,
        number=293064725,
        optional=True,
    )


class AccessConfig(proto.Message):
    r"""An access configuration attached to an instance's network
    interface. Only one access config per instance is supported.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        external_ipv6 (str):
            The first IPv6 address of the external IPv6
            range associated with this instance, prefix
            length is stored in externalIpv6PrefixLength in
            ipv6AccessConfig. To use a static external IP
            address, it must be unused and in the same
            region as the instance's zone. If not specified,
            Google Cloud will automatically assign an
            external IPv6 address from the instance's
            subnetwork.

            This field is a member of `oneof`_ ``_external_ipv6``.
        external_ipv6_prefix_length (int):
            The prefix length of the external IPv6 range.

            This field is a member of `oneof`_ ``_external_ipv6_prefix_length``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#accessConfig for access configs.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            The name of this access configuration. The
            default and recommended name is External NAT,
            but you can use any arbitrary string, such as My
            external IP or Network Access.

            This field is a member of `oneof`_ ``_name``.
        nat_i_p (str):
            An external IP address associated with this
            instance. Specify an unused static external IP
            address available to the project or leave this
            field undefined to use an IP from a shared
            ephemeral IP address pool. If you specify a
            static external IP address, it must live in the
            same region as the zone of the instance.

            This field is a member of `oneof`_ ``_nat_i_p``.
        network_tier (str):
            This signifies the networking tier used for
            configuring this access configuration and can
            only take the following values: PREMIUM,
            STANDARD. If an AccessConfig is specified
            without a valid external IP address, an
            ephemeral IP will be created with this
            networkTier. If an AccessConfig with a valid
            external IP address is specified, it must match
            that of the networkTier associated with the
            Address resource owning that IP. Check the
            NetworkTier enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_network_tier``.
        public_ptr_domain_name (str):
            The DNS domain name for the public PTR record. You can set
            this field only if the ``setPublicPtr`` field is enabled in
            accessConfig. If this field is unspecified in
            ipv6AccessConfig, a default PTR record will be createc for
            first IP in associated external IPv6 range.

            This field is a member of `oneof`_ ``_public_ptr_domain_name``.
        set_public_ptr (bool):
            Specifies whether a public DNS 'PTR' record
            should be created to map the external IP address
            of the instance to a DNS domain name. This field
            is not used in ipv6AccessConfig. A default PTR
            record will be created if the VM has external
            IPv6 range associated.

            This field is a member of `oneof`_ ``_set_public_ptr``.
        type_ (str):
            The type of configuration. The default and only option is
            ONE_TO_ONE_NAT. Check the Type enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_type``.
    """

    class NetworkTier(proto.Enum):
        r"""This signifies the networking tier used for configuring this
        access configuration and can only take the following values:
        PREMIUM, STANDARD. If an AccessConfig is specified without a
        valid external IP address, an ephemeral IP will be created with
        this networkTier. If an AccessConfig with a valid external IP
        address is specified, it must match that of the networkTier
        associated with the Address resource owning that IP.

        Values:
            UNDEFINED_NETWORK_TIER (0):
                A value indicating that the enum field is not
                set.
            FIXED_STANDARD (310464328):
                Public internet quality with fixed bandwidth.
            PREMIUM (399530551):
                High quality, Google-grade network tier,
                support for all networking products.
            STANDARD (484642493):
                Public internet quality, only limited support
                for other networking products.
            STANDARD_OVERRIDES_FIXED_STANDARD (465847234):
                (Output only) Temporary tier for FIXED_STANDARD when fixed
                standard tier is expired or not configured.
        """
        UNDEFINED_NETWORK_TIER = 0
        FIXED_STANDARD = 310464328
        PREMIUM = 399530551
        STANDARD = 484642493
        STANDARD_OVERRIDES_FIXED_STANDARD = 465847234

    class Type(proto.Enum):
        r"""The type of configuration. The default and only option is
        ONE_TO_ONE_NAT.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            DIRECT_IPV6 (4397213):
                No description available.
            ONE_TO_ONE_NAT (84090205):
                No description available.
        """
        UNDEFINED_TYPE = 0
        DIRECT_IPV6 = 4397213
        ONE_TO_ONE_NAT = 84090205

    external_ipv6: str = proto.Field(
        proto.STRING,
        number=532703707,
        optional=True,
    )
    external_ipv6_prefix_length: int = proto.Field(
        proto.INT32,
        number=425672143,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    nat_i_p: str = proto.Field(
        proto.STRING,
        number=117634556,
        optional=True,
    )
    network_tier: str = proto.Field(
        proto.STRING,
        number=517397843,
        optional=True,
    )
    public_ptr_domain_name: str = proto.Field(
        proto.STRING,
        number=316599167,
        optional=True,
    )
    set_public_ptr: bool = proto.Field(
        proto.BOOL,
        number=523870229,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class AddAccessConfigInstanceRequest(proto.Message):
    r"""A request message for Instances.AddAccessConfig. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        access_config_resource (google.cloud.compute_v1.types.AccessConfig):
            The body resource for this request
        instance (str):
            The instance name for this request.
        network_interface (str):
            The name of the network interface to add to
            this instance.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    access_config_resource: "AccessConfig" = proto.Field(
        proto.MESSAGE,
        number=387825552,
        message="AccessConfig",
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    network_interface: str = proto.Field(
        proto.STRING,
        number=365387880,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class AddAssociationFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.AddAssociation. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation):
            The body resource for this request
        replace_existing_association (bool):
            Indicates whether or not to replace it if an
            association of the attachment already exists.
            This is false by default, in which case an error
            will be returned if an association already
            exists.

            This field is a member of `oneof`_ ``_replace_existing_association``.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_association_resource: "FirewallPolicyAssociation" = proto.Field(
        proto.MESSAGE,
        number=259546170,
        message="FirewallPolicyAssociation",
    )
    replace_existing_association: bool = proto.Field(
        proto.BOOL,
        number=209541240,
        optional=True,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AddAssociationNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.AddAssociation.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation):
            The body resource for this request
        project (str):
            Project ID for this request.
        replace_existing_association (bool):
            Indicates whether or not to replace it if an
            association of the attachment already exists.
            This is false by default, in which case an error
            will be returned if an association already
            exists.

            This field is a member of `oneof`_ ``_replace_existing_association``.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_association_resource: "FirewallPolicyAssociation" = proto.Field(
        proto.MESSAGE,
        number=259546170,
        message="FirewallPolicyAssociation",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    replace_existing_association: bool = proto.Field(
        proto.BOOL,
        number=209541240,
        optional=True,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AddAssociationRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.AddAssociation. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        replace_existing_association (bool):
            Indicates whether or not to replace it if an
            association already exists. This is false by
            default, in which case an error will be returned
            if an association already exists.

            This field is a member of `oneof`_ ``_replace_existing_association``.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_association_resource: "FirewallPolicyAssociation" = proto.Field(
        proto.MESSAGE,
        number=259546170,
        message="FirewallPolicyAssociation",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    replace_existing_association: bool = proto.Field(
        proto.BOOL,
        number=209541240,
        optional=True,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AddHealthCheckTargetPoolRequest(proto.Message):
    r"""A request message for TargetPools.AddHealthCheck. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_pool (str):
            Name of the target pool to add a health check
            to.
        target_pools_add_health_check_request_resource (google.cloud.compute_v1.types.TargetPoolsAddHealthCheckRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_pool: str = proto.Field(
        proto.STRING,
        number=62796298,
    )
    target_pools_add_health_check_request_resource: "TargetPoolsAddHealthCheckRequest" = proto.Field(
        proto.MESSAGE,
        number=269573412,
        message="TargetPoolsAddHealthCheckRequest",
    )


class AddInstanceTargetPoolRequest(proto.Message):
    r"""A request message for TargetPools.AddInstance. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_pool (str):
            Name of the TargetPool resource to add
            instances to.
        target_pools_add_instance_request_resource (google.cloud.compute_v1.types.TargetPoolsAddInstanceRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_pool: str = proto.Field(
        proto.STRING,
        number=62796298,
    )
    target_pools_add_instance_request_resource: "TargetPoolsAddInstanceRequest" = (
        proto.Field(
            proto.MESSAGE,
            number=428796404,
            message="TargetPoolsAddInstanceRequest",
        )
    )


class AddInstancesInstanceGroupRequest(proto.Message):
    r"""A request message for InstanceGroups.AddInstances. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group (str):
            The name of the instance group where you are
            adding instances.
        instance_groups_add_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupsAddInstancesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the instance group
            is located.
    """

    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
    )
    instance_groups_add_instances_request_resource: "InstanceGroupsAddInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=453713246,
        message="InstanceGroupsAddInstancesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class AddNodesNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.AddNodes. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_group (str):
            Name of the NodeGroup resource.
        node_groups_add_nodes_request_resource (google.cloud.compute_v1.types.NodeGroupsAddNodesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    node_group: str = proto.Field(
        proto.STRING,
        number=469958146,
    )
    node_groups_add_nodes_request_resource: "NodeGroupsAddNodesRequest" = proto.Field(
        proto.MESSAGE,
        number=131263288,
        message="NodeGroupsAddNodesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class AddPeeringNetworkRequest(proto.Message):
    r"""A request message for Networks.AddPeering. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network (str):
            Name of the network resource to add peering
            to.
        networks_add_peering_request_resource (google.cloud.compute_v1.types.NetworksAddPeeringRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    networks_add_peering_request_resource: "NetworksAddPeeringRequest" = proto.Field(
        proto.MESSAGE,
        number=388810421,
        message="NetworksAddPeeringRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AddResourcePoliciesDiskRequest(proto.Message):
    r"""A request message for Disks.AddResourcePolicies. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            The disk name for this request.
        disks_add_resource_policies_request_resource (google.cloud.compute_v1.types.DisksAddResourcePoliciesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    disks_add_resource_policies_request_resource: "DisksAddResourcePoliciesRequest" = (
        proto.Field(
            proto.MESSAGE,
            number=496483363,
            message="DisksAddResourcePoliciesRequest",
        )
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class AddResourcePoliciesInstanceRequest(proto.Message):
    r"""A request message for Instances.AddResourcePolicies. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            The instance name for this request.
        instances_add_resource_policies_request_resource (google.cloud.compute_v1.types.InstancesAddResourcePoliciesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instances_add_resource_policies_request_resource: "InstancesAddResourcePoliciesRequest" = proto.Field(
        proto.MESSAGE,
        number=489351963,
        message="InstancesAddResourcePoliciesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class AddResourcePoliciesRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.AddResourcePolicies. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            The disk name for this request.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_disks_add_resource_policies_request_resource (google.cloud.compute_v1.types.RegionDisksAddResourcePoliciesRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_disks_add_resource_policies_request_resource: "RegionDisksAddResourcePoliciesRequest" = proto.Field(
        proto.MESSAGE,
        number=284196750,
        message="RegionDisksAddResourcePoliciesRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AddRuleFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.AddRule. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_rule_resource: "FirewallPolicyRule" = proto.Field(
        proto.MESSAGE,
        number=250523523,
        message="FirewallPolicyRule",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AddRuleNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.AddRule. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
            The body resource for this request
        max_priority (int):
            When rule.priority is not specified, auto
            choose a unused priority between minPriority and
            maxPriority>. This field is exclusive with
            rule.priority.

            This field is a member of `oneof`_ ``_max_priority``.
        min_priority (int):
            When rule.priority is not specified, auto
            choose a unused priority between minPriority and
            maxPriority>. This field is exclusive with
            rule.priority.

            This field is a member of `oneof`_ ``_min_priority``.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_rule_resource: "FirewallPolicyRule" = proto.Field(
        proto.MESSAGE,
        number=250523523,
        message="FirewallPolicyRule",
    )
    max_priority: int = proto.Field(
        proto.INT32,
        number=329635359,
        optional=True,
    )
    min_priority: int = proto.Field(
        proto.INT32,
        number=267190513,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AddRuleRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for RegionNetworkFirewallPolicies.AddRule.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
            The body resource for this request
        max_priority (int):
            When rule.priority is not specified, auto
            choose a unused priority between minPriority and
            maxPriority>. This field is exclusive with
            rule.priority.

            This field is a member of `oneof`_ ``_max_priority``.
        min_priority (int):
            When rule.priority is not specified, auto
            choose a unused priority between minPriority and
            maxPriority>. This field is exclusive with
            rule.priority.

            This field is a member of `oneof`_ ``_min_priority``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_rule_resource: "FirewallPolicyRule" = proto.Field(
        proto.MESSAGE,
        number=250523523,
        message="FirewallPolicyRule",
    )
    max_priority: int = proto.Field(
        proto.INT32,
        number=329635359,
        optional=True,
    )
    min_priority: int = proto.Field(
        proto.INT32,
        number=267190513,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AddRuleSecurityPolicyRequest(proto.Message):
    r"""A request message for SecurityPolicies.AddRule. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        security_policy (str):
            Name of the security policy to update.
        security_policy_rule_resource (google.cloud.compute_v1.types.SecurityPolicyRule):
            The body resource for this request
        validate_only (bool):
            If true, the request will not be committed.

            This field is a member of `oneof`_ ``_validate_only``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )
    security_policy_rule_resource: "SecurityPolicyRule" = proto.Field(
        proto.MESSAGE,
        number=402693443,
        message="SecurityPolicyRule",
    )
    validate_only: bool = proto.Field(
        proto.BOOL,
        number=242744629,
        optional=True,
    )


class AddSignedUrlKeyBackendBucketRequest(proto.Message):
    r"""A request message for BackendBuckets.AddSignedUrlKey. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_bucket (str):
            Name of the BackendBucket resource to which
            the Signed URL Key should be added. The name
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        signed_url_key_resource (google.cloud.compute_v1.types.SignedUrlKey):
            The body resource for this request
    """

    backend_bucket: str = proto.Field(
        proto.STRING,
        number=91714037,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    signed_url_key_resource: "SignedUrlKey" = proto.Field(
        proto.MESSAGE,
        number=457625985,
        message="SignedUrlKey",
    )


class AddSignedUrlKeyBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.AddSignedUrlKey. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to which
            the Signed URL Key should be added. The name
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        signed_url_key_resource (google.cloud.compute_v1.types.SignedUrlKey):
            The body resource for this request
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    signed_url_key_resource: "SignedUrlKey" = proto.Field(
        proto.MESSAGE,
        number=457625985,
        message="SignedUrlKey",
    )


class Address(proto.Message):
    r"""Represents an IP Address resource. Google Compute Engine has two IP
    Address resources: \* `Global (external and
    internal) <https://cloud.google.com/compute/docs/reference/rest/v1/globalAddresses>`__
    \* `Regional (external and
    internal) <https://cloud.google.com/compute/docs/reference/rest/v1/addresses>`__
    For more information, see Reserving a static external IP address.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        address (str):
            The static IP address represented by this
            resource.

            This field is a member of `oneof`_ ``_address``.
        address_type (str):
            The type of address to reserve, either
            INTERNAL or EXTERNAL. If unspecified, defaults
            to EXTERNAL. Check the AddressType enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_address_type``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this field when you create the resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        ip_version (str):
            The IP version that will be used by this
            address. Valid options are IPV4 or IPV6. This
            can only be specified for a global address.
            Check the IpVersion enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_ip_version``.
        ipv6_endpoint_type (str):
            The endpoint type of this address, which
            should be VM or NETLB. This is used for deciding
            which type of endpoint this address can be used
            after the external IPv6 address reservation.
            Check the Ipv6EndpointType enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_ipv6_endpoint_type``.
        kind (str):
            [Output Only] Type of the resource. Always compute#address
            for addresses.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?``. The first character must be
            a lowercase letter, and all following characters (except for
            the last character) must be a dash, lowercase letter, or
            digit. The last character must be a lowercase letter or
            digit.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            The URL of the network in which to reserve the address. This
            field can only be used with INTERNAL type with the
            VPC_PEERING purpose.

            This field is a member of `oneof`_ ``_network``.
        network_tier (str):
            This signifies the networking tier used for
            configuring this address and can only take the
            following values: PREMIUM or STANDARD. Internal
            IP addresses are always Premium Tier; global
            external IP addresses are always Premium Tier;
            regional external IP addresses can be either
            Standard or Premium Tier. If this field is not
            specified, it is assumed to be PREMIUM. Check
            the NetworkTier enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_network_tier``.
        prefix_length (int):
            The prefix length if the resource represents
            an IP range.

            This field is a member of `oneof`_ ``_prefix_length``.
        purpose (str):
            The purpose of this resource, which can be one of the
            following values: - GCE_ENDPOINT for addresses that are used
            by VM instances, alias IP ranges, load balancers, and
            similar resources. - DNS_RESOLVER for a DNS resolver address
            in a subnetwork for a Cloud DNS inbound forwarder IP
            addresses (regional internal IP address in a subnet of a VPC
            network) - VPC_PEERING for global internal IP addresses used
            for private services access allocated ranges. - NAT_AUTO for
            the regional external IP addresses used by Cloud NAT when
            allocating addresses using automatic NAT IP address
            allocation. - IPSEC_INTERCONNECT for addresses created from
            a private IP range that are reserved for a VLAN attachment
            in an *HA VPN over Cloud Interconnect* configuration. These
            addresses are regional resources. -
            ``SHARED_LOADBALANCER_VIP`` for an internal IP address that
            is assigned to multiple internal forwarding rules. -
            ``PRIVATE_SERVICE_CONNECT`` for a private network address
            that is used to configure Private Service Connect. Only
            global internal addresses can use this purpose. Check the
            Purpose enum for the list of possible values.

            This field is a member of `oneof`_ ``_purpose``.
        region (str):
            [Output Only] The URL of the region where a regional address
            resides. For regional addresses, you must specify the region
            as a path parameter in the HTTP request URL. *This field is
            not applicable to global addresses.*

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        status (str):
            [Output Only] The status of the address, which can be one of
            RESERVING, RESERVED, or IN_USE. An address that is RESERVING
            is currently in the process of being reserved. A RESERVED
            address is currently reserved and available to use. An
            IN_USE address is currently being used by another resource
            and is not available. Check the Status enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_status``.
        subnetwork (str):
            The URL of the subnetwork in which to reserve the address.
            If an IP address is specified, it must be within the
            subnetwork's IP range. This field can only be used with
            INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose.

            This field is a member of `oneof`_ ``_subnetwork``.
        users (MutableSequence[str]):
            [Output Only] The URLs of the resources that are using this
            address.
    """

    class AddressType(proto.Enum):
        r"""The type of address to reserve, either INTERNAL or EXTERNAL.
        If unspecified, defaults to EXTERNAL.

        Values:
            UNDEFINED_ADDRESS_TYPE (0):
                A value indicating that the enum field is not
                set.
            EXTERNAL (35607499):
                A publicly visible external IP address.
            INTERNAL (279295677):
                A private network IP address, for use with an
                Instance or Internal Load Balancer forwarding
                rule.
            UNSPECIFIED_TYPE (53933922):
                No description available.
        """
        UNDEFINED_ADDRESS_TYPE = 0
        EXTERNAL = 35607499
        INTERNAL = 279295677
        UNSPECIFIED_TYPE = 53933922

    class IpVersion(proto.Enum):
        r"""The IP version that will be used by this address. Valid
        options are IPV4 or IPV6. This can only be specified for a
        global address.

        Values:
            UNDEFINED_IP_VERSION (0):
                A value indicating that the enum field is not
                set.
            IPV4 (2254341):
                No description available.
            IPV6 (2254343):
                No description available.
            UNSPECIFIED_VERSION (21850000):
                No description available.
        """
        UNDEFINED_IP_VERSION = 0
        IPV4 = 2254341
        IPV6 = 2254343
        UNSPECIFIED_VERSION = 21850000

    class Ipv6EndpointType(proto.Enum):
        r"""The endpoint type of this address, which should be VM or
        NETLB. This is used for deciding which type of endpoint this
        address can be used after the external IPv6 address reservation.

        Values:
            UNDEFINED_IPV6_ENDPOINT_TYPE (0):
                A value indicating that the enum field is not
                set.
            NETLB (74173363):
                Reserved IPv6 address can be used on network
                load balancer.
            VM (2743):
                Reserved IPv6 address can be used on VM.
        """
        UNDEFINED_IPV6_ENDPOINT_TYPE = 0
        NETLB = 74173363
        VM = 2743

    class NetworkTier(proto.Enum):
        r"""This signifies the networking tier used for configuring this
        address and can only take the following values: PREMIUM or
        STANDARD. Internal IP addresses are always Premium Tier; global
        external IP addresses are always Premium Tier; regional external
        IP addresses can be either Standard or Premium Tier. If this
        field is not specified, it is assumed to be PREMIUM.

        Values:
            UNDEFINED_NETWORK_TIER (0):
                A value indicating that the enum field is not
                set.
            FIXED_STANDARD (310464328):
                Public internet quality with fixed bandwidth.
            PREMIUM (399530551):
                High quality, Google-grade network tier,
                support for all networking products.
            STANDARD (484642493):
                Public internet quality, only limited support
                for other networking products.
            STANDARD_OVERRIDES_FIXED_STANDARD (465847234):
                (Output only) Temporary tier for FIXED_STANDARD when fixed
                standard tier is expired or not configured.
        """
        UNDEFINED_NETWORK_TIER = 0
        FIXED_STANDARD = 310464328
        PREMIUM = 399530551
        STANDARD = 484642493
        STANDARD_OVERRIDES_FIXED_STANDARD = 465847234

    class Purpose(proto.Enum):
        r"""The purpose of this resource, which can be one of the following
        values: - GCE_ENDPOINT for addresses that are used by VM instances,
        alias IP ranges, load balancers, and similar resources. -
        DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud
        DNS inbound forwarder IP addresses (regional internal IP address in
        a subnet of a VPC network) - VPC_PEERING for global internal IP
        addresses used for private services access allocated ranges. -
        NAT_AUTO for the regional external IP addresses used by Cloud NAT
        when allocating addresses using automatic NAT IP address allocation.
        - IPSEC_INTERCONNECT for addresses created from a private IP range
        that are reserved for a VLAN attachment in an *HA VPN over Cloud
        Interconnect* configuration. These addresses are regional resources.
        - ``SHARED_LOADBALANCER_VIP`` for an internal IP address that is
        assigned to multiple internal forwarding rules. -
        ``PRIVATE_SERVICE_CONNECT`` for a private network address that is
        used to configure Private Service Connect. Only global internal
        addresses can use this purpose.

        Values:
            UNDEFINED_PURPOSE (0):
                A value indicating that the enum field is not
                set.
            DNS_RESOLVER (476114556):
                DNS resolver address in the subnetwork.
            GCE_ENDPOINT (230515243):
                VM internal/alias IP, Internal LB service IP,
                etc.
            IPSEC_INTERCONNECT (340437251):
                A regional internal IP address range reserved
                for the VLAN attachment that is used in HA VPN
                over Cloud Interconnect. This regional internal
                IP address range must not overlap with any IP
                address range of subnet/route in the VPC network
                and its peering networks. After the VLAN
                attachment is created with the reserved IP
                address range, when creating a new VPN gateway,
                its interface IP address is allocated from the
                associated VLAN attachment’s IP address range.
            NAT_AUTO (163666477):
                External IP automatically reserved for Cloud
                NAT.
            PRIVATE_SERVICE_CONNECT (48134724):
                A private network IP address that can be used
                to configure Private Service Connect. This
                purpose can be specified only for GLOBAL
                addresses of Type INTERNAL
            SERVERLESS (270492508):
                A regional internal IP address range reserved
                for Serverless.
            SHARED_LOADBALANCER_VIP (294447572):
                A private network IP address that can be
                shared by multiple Internal Load Balancer
                forwarding rules.
            VPC_PEERING (400800170):
                IP range for peer networks.
        """
        UNDEFINED_PURPOSE = 0
        DNS_RESOLVER = 476114556
        GCE_ENDPOINT = 230515243
        IPSEC_INTERCONNECT = 340437251
        NAT_AUTO = 163666477
        PRIVATE_SERVICE_CONNECT = 48134724
        SERVERLESS = 270492508
        SHARED_LOADBALANCER_VIP = 294447572
        VPC_PEERING = 400800170

    class Status(proto.Enum):
        r"""[Output Only] The status of the address, which can be one of
        RESERVING, RESERVED, or IN_USE. An address that is RESERVING is
        currently in the process of being reserved. A RESERVED address is
        currently reserved and available to use. An IN_USE address is
        currently being used by another resource and is not available.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            IN_USE (17393485):
                Address is being used by another resource and
                is not available.
            RESERVED (432241448):
                Address is reserved and available to use.
            RESERVING (514587225):
                Address is being reserved.
        """
        UNDEFINED_STATUS = 0
        IN_USE = 17393485
        RESERVED = 432241448
        RESERVING = 514587225

    address: str = proto.Field(
        proto.STRING,
        number=462920692,
        optional=True,
    )
    address_type: str = proto.Field(
        proto.STRING,
        number=264307877,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    ip_version: str = proto.Field(
        proto.STRING,
        number=294959552,
        optional=True,
    )
    ipv6_endpoint_type: str = proto.Field(
        proto.STRING,
        number=97501004,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    network_tier: str = proto.Field(
        proto.STRING,
        number=517397843,
        optional=True,
    )
    prefix_length: int = proto.Field(
        proto.INT32,
        number=453565747,
        optional=True,
    )
    purpose: str = proto.Field(
        proto.STRING,
        number=316407070,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
        optional=True,
    )
    users: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=111578632,
    )


class AddressAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.AddressesScopedList]):
            A list of AddressesScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#addressAggregatedList for aggregated lists of
            addresses.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "AddressesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="AddressesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class AddressList(proto.Message):
    r"""Contains a list of addresses.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Address]):
            A list of Address resources.
        kind (str):
            [Output Only] Type of resource. Always compute#addressList
            for lists of addresses.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Address"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Address",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class AddressesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        addresses (MutableSequence[google.cloud.compute_v1.types.Address]):
            [Output Only] A list of addresses contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of addresses when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    addresses: MutableSequence["Address"] = proto.RepeatedField(
        proto.MESSAGE,
        number=337673122,
        message="Address",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class AdvancedMachineFeatures(proto.Message):
    r"""Specifies options for controlling advanced machine features.
    Options that would traditionally be configured in a BIOS belong
    here. Features that require operating system support may have
    corresponding entries in the GuestOsFeatures of an Image (e.g.,
    whether or not the OS in the Image supports nested
    virtualization being enabled or disabled).


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enable_nested_virtualization (bool):
            Whether to enable nested virtualization or
            not (default is false).

            This field is a member of `oneof`_ ``_enable_nested_virtualization``.
        enable_uefi_networking (bool):
            Whether to enable UEFI networking for
            instance creation.

            This field is a member of `oneof`_ ``_enable_uefi_networking``.
        threads_per_core (int):
            The number of threads per physical core. To
            disable simultaneous multithreading (SMT) set
            this to 1. If unset, the maximum number of
            threads supported per core by the underlying
            processor is assumed.

            This field is a member of `oneof`_ ``_threads_per_core``.
        visible_core_count (int):
            The number of physical cores to expose to an
            instance. Multiply by the number of threads per
            core to compute the total number of virtual CPUs
            to expose to the instance. If unset, the number
            of cores is inferred from the instance's nominal
            CPU count and the underlying platform's SMT
            width.

            This field is a member of `oneof`_ ``_visible_core_count``.
    """

    enable_nested_virtualization: bool = proto.Field(
        proto.BOOL,
        number=16639365,
        optional=True,
    )
    enable_uefi_networking: bool = proto.Field(
        proto.BOOL,
        number=334485668,
        optional=True,
    )
    threads_per_core: int = proto.Field(
        proto.INT32,
        number=352611671,
        optional=True,
    )
    visible_core_count: int = proto.Field(
        proto.INT32,
        number=193198684,
        optional=True,
    )


class AggregatedListAcceleratorTypesRequest(proto.Message):
    r"""A request message for AcceleratorTypes.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListAddressesRequest(proto.Message):
    r"""A request message for Addresses.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListAutoscalersRequest(proto.Message):
    r"""A request message for Autoscalers.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListBackendServicesRequest(proto.Message):
    r"""A request message for BackendServices.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListDiskTypesRequest(proto.Message):
    r"""A request message for DiskTypes.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListDisksRequest(proto.Message):
    r"""A request message for Disks.AggregatedList. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListForwardingRulesRequest(proto.Message):
    r"""A request message for ForwardingRules.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListGlobalOperationsRequest(proto.Message):
    r"""A request message for GlobalOperations.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListHealthChecksRequest(proto.Message):
    r"""A request message for HealthChecks.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListInstanceGroupManagersRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.AggregatedList.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListInstanceGroupsRequest(proto.Message):
    r"""A request message for InstanceGroups.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListInstanceTemplatesRequest(proto.Message):
    r"""A request message for InstanceTemplates.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListInstancesRequest(proto.Message):
    r"""A request message for Instances.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListInterconnectAttachmentsRequest(proto.Message):
    r"""A request message for InterconnectAttachments.AggregatedList.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListMachineTypesRequest(proto.Message):
    r"""A request message for MachineTypes.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListNetworkAttachmentsRequest(proto.Message):
    r"""A request message for NetworkAttachments.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message):
    r"""A request message for
    NetworkEdgeSecurityServices.AggregatedList. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListNetworkEndpointGroupsRequest(proto.Message):
    r"""A request message for NetworkEndpointGroups.AggregatedList.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListNodeGroupsRequest(proto.Message):
    r"""A request message for NodeGroups.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListNodeTemplatesRequest(proto.Message):
    r"""A request message for NodeTemplates.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListNodeTypesRequest(proto.Message):
    r"""A request message for NodeTypes.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListPacketMirroringsRequest(proto.Message):
    r"""A request message for PacketMirrorings.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListPublicDelegatedPrefixesRequest(proto.Message):
    r"""A request message for PublicDelegatedPrefixes.AggregatedList.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListRegionCommitmentsRequest(proto.Message):
    r"""A request message for RegionCommitments.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListReservationsRequest(proto.Message):
    r"""A request message for Reservations.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListResourcePoliciesRequest(proto.Message):
    r"""A request message for ResourcePolicies.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListRoutersRequest(proto.Message):
    r"""A request message for Routers.AggregatedList. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListSecurityPoliciesRequest(proto.Message):
    r"""A request message for SecurityPolicies.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListServiceAttachmentsRequest(proto.Message):
    r"""A request message for ServiceAttachments.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListSslCertificatesRequest(proto.Message):
    r"""A request message for SslCertificates.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListSslPoliciesRequest(proto.Message):
    r"""A request message for SslPolicies.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListSubnetworksRequest(proto.Message):
    r"""A request message for Subnetworks.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListTargetHttpProxiesRequest(proto.Message):
    r"""A request message for TargetHttpProxies.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListTargetHttpsProxiesRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListTargetInstancesRequest(proto.Message):
    r"""A request message for TargetInstances.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListTargetPoolsRequest(proto.Message):
    r"""A request message for TargetPools.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListTargetTcpProxiesRequest(proto.Message):
    r"""A request message for TargetTcpProxies.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListTargetVpnGatewaysRequest(proto.Message):
    r"""A request message for TargetVpnGateways.AggregatedList. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListUrlMapsRequest(proto.Message):
    r"""A request message for UrlMaps.AggregatedList. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Name of the project scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListVpnGatewaysRequest(proto.Message):
    r"""A request message for VpnGateways.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AggregatedListVpnTunnelsRequest(proto.Message):
    r"""A request message for VpnTunnels.AggregatedList. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        include_all_scopes (bool):
            Indicates whether every visible scope for
            each scope type (zone, region, global) should be
            included in the response. For new resource types
            added after this field, the flag has no effect
            as new resource types will always include every
            visible scope for each scope type in response.
            For resource types which predate this field, if
            this flag is omitted or false, only scopes of
            the scope types where the resource type is
            expected to be found will be included.

            This field is a member of `oneof`_ ``_include_all_scopes``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    include_all_scopes: bool = proto.Field(
        proto.BOOL,
        number=391327988,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class AliasIpRange(proto.Message):
    r"""An alias IP range attached to an instance's network
    interface.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ip_cidr_range (str):
            The IP alias ranges to allocate for this
            interface. This IP CIDR range must belong to the
            specified subnetwork and cannot contain IP
            addresses reserved by system or used by other
            network interfaces. This range may be a single
            IP address (such as 10.2.3.4), a netmask (such
            as /24) or a CIDR-formatted string (such as
            10.1.2.0/24).

            This field is a member of `oneof`_ ``_ip_cidr_range``.
        subnetwork_range_name (str):
            The name of a subnetwork secondary IP range
            from which to allocate an IP alias range. If not
            specified, the primary range of the subnetwork
            is used.

            This field is a member of `oneof`_ ``_subnetwork_range_name``.
    """

    ip_cidr_range: str = proto.Field(
        proto.STRING,
        number=98117322,
        optional=True,
    )
    subnetwork_range_name: str = proto.Field(
        proto.STRING,
        number=387995966,
        optional=True,
    )


class AllocationResourceStatus(proto.Message):
    r"""[Output Only] Contains output only fields.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        specific_sku_allocation (google.cloud.compute_v1.types.AllocationResourceStatusSpecificSKUAllocation):
            Allocation Properties of this reservation.

            This field is a member of `oneof`_ ``_specific_sku_allocation``.
    """

    specific_sku_allocation: "AllocationResourceStatusSpecificSKUAllocation" = (
        proto.Field(
            proto.MESSAGE,
            number=196231151,
            optional=True,
            message="AllocationResourceStatusSpecificSKUAllocation",
        )
    )


class AllocationResourceStatusSpecificSKUAllocation(proto.Message):
    r"""Contains Properties set for the reservation.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        source_instance_template_id (str):
            ID of the instance template used to populate
            reservation properties.

            This field is a member of `oneof`_ ``_source_instance_template_id``.
    """

    source_instance_template_id: str = proto.Field(
        proto.STRING,
        number=111196154,
        optional=True,
    )


class AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk(
    proto.Message
):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk_size_gb (int):
            Specifies the size of the disk in base-2 GB.

            This field is a member of `oneof`_ ``_disk_size_gb``.
        interface (str):
            Specifies the disk interface to use for
            attaching this disk, which is either SCSI or
            NVME. The default is SCSI. For performance
            characteristics of SCSI over NVMe, see Local SSD
            performance. Check the Interface enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_interface``.
    """

    class Interface(proto.Enum):
        r"""Specifies the disk interface to use for attaching this disk,
        which is either SCSI or NVME. The default is SCSI. For
        performance characteristics of SCSI over NVMe, see Local SSD
        performance.

        Values:
            UNDEFINED_INTERFACE (0):
                A value indicating that the enum field is not
                set.
            NVME (2408800):
                No description available.
            SCSI (2539686):
                No description available.
        """
        UNDEFINED_INTERFACE = 0
        NVME = 2408800
        SCSI = 2539686

    disk_size_gb: int = proto.Field(
        proto.INT64,
        number=316263735,
        optional=True,
    )
    interface: str = proto.Field(
        proto.STRING,
        number=502623545,
        optional=True,
    )


class AllocationSpecificSKUAllocationReservedInstanceProperties(proto.Message):
    r"""Properties of the SKU instances being reserved. Next ID: 9

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        guest_accelerators (MutableSequence[google.cloud.compute_v1.types.AcceleratorConfig]):
            Specifies accelerator type and count.
        local_ssds (MutableSequence[google.cloud.compute_v1.types.AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk]):
            Specifies amount of local ssd to reserve with
            each instance. The type of disk is local-ssd.
        location_hint (str):
            An opaque location hint used to place the
            allocation close to other resources. This field
            is for use by internal tools that use the public
            API.

            This field is a member of `oneof`_ ``_location_hint``.
        machine_type (str):
            Specifies type of machine (name only) which has fixed number
            of vCPUs and fixed amount of memory. This also includes
            specifying custom machine type following
            custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY pattern.

            This field is a member of `oneof`_ ``_machine_type``.
        min_cpu_platform (str):
            Minimum cpu platform the reservation.

            This field is a member of `oneof`_ ``_min_cpu_platform``.
    """

    guest_accelerators: MutableSequence["AcceleratorConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=463595119,
        message="AcceleratorConfig",
    )
    local_ssds: MutableSequence[
        "AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=229951299,
        message="AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk",
    )
    location_hint: str = proto.Field(
        proto.STRING,
        number=350519505,
        optional=True,
    )
    machine_type: str = proto.Field(
        proto.STRING,
        number=227711026,
        optional=True,
    )
    min_cpu_platform: str = proto.Field(
        proto.STRING,
        number=242912759,
        optional=True,
    )


class AllocationSpecificSKUReservation(proto.Message):
    r"""This reservation type allows to pre allocate specific
    instance configuration. Next ID: 6


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        assured_count (int):
            [Output Only] Indicates how many instances are actually
            usable currently.

            This field is a member of `oneof`_ ``_assured_count``.
        count (int):
            Specifies the number of resources that are
            allocated.

            This field is a member of `oneof`_ ``_count``.
        in_use_count (int):
            [Output Only] Indicates how many instances are in use.

            This field is a member of `oneof`_ ``_in_use_count``.
        instance_properties (google.cloud.compute_v1.types.AllocationSpecificSKUAllocationReservedInstanceProperties):
            The instance properties for the reservation.

            This field is a member of `oneof`_ ``_instance_properties``.
        source_instance_template (str):
            Specifies the instance template to create the
            reservation. If you use this field, you must
            exclude the instanceProperties field. This field
            is optional, and it can be a full or partial
            URL. For example, the following are all valid
            URLs to an instance template: -
            https://www.googleapis.com/compute/v1/projects/project
            /global/instanceTemplates/instanceTemplate -
            projects/project/global/instanceTemplates/instanceTemplate
            - global/instanceTemplates/instanceTemplate

            This field is a member of `oneof`_ ``_source_instance_template``.
    """

    assured_count: int = proto.Field(
        proto.INT64,
        number=281197645,
        optional=True,
    )
    count: int = proto.Field(
        proto.INT64,
        number=94851343,
        optional=True,
    )
    in_use_count: int = proto.Field(
        proto.INT64,
        number=493458877,
        optional=True,
    )
    instance_properties: "AllocationSpecificSKUAllocationReservedInstanceProperties" = (
        proto.Field(
            proto.MESSAGE,
            number=215355165,
            optional=True,
            message="AllocationSpecificSKUAllocationReservedInstanceProperties",
        )
    )
    source_instance_template: str = proto.Field(
        proto.STRING,
        number=332423616,
        optional=True,
    )


class Allowed(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        I_p_protocol (str):
            The IP protocol to which this rule applies.
            The protocol type is required when creating a
            firewall rule. This value can either be one of
            the following well known protocol strings (tcp,
            udp, icmp, esp, ah, ipip, sctp) or the IP
            protocol number.

            This field is a member of `oneof`_ ``_I_p_protocol``.
        ports (MutableSequence[str]):
            An optional list of ports to which this rule applies. This
            field is only applicable for the UDP or TCP protocol. Each
            entry must be either an integer or a range. If not
            specified, this rule applies to connections through any
            port. Example inputs include: ["22"], ["80","443"], and
            ["12345-12349"].
    """

    I_p_protocol: str = proto.Field(
        proto.STRING,
        number=488094525,
        optional=True,
    )
    ports: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=106854418,
    )


class ApplyUpdatesToInstancesInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    InstanceGroupManagers.ApplyUpdatesToInstances. See the method
    description for details.

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group,
            should conform to RFC1035.
        instance_group_managers_apply_updates_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersApplyUpdatesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone where the managed
            instance group is located. Should conform to
            RFC1035.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_apply_updates_request_resource: "InstanceGroupManagersApplyUpdatesRequest" = proto.Field(
        proto.MESSAGE,
        number=259242835,
        message="InstanceGroupManagersApplyUpdatesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.ApplyUpdatesToInstances. See the
    method description for details.

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group,
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request,
            should conform to RFC1035.
        region_instance_group_managers_apply_updates_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersApplyUpdatesRequest):
            The body resource for this request
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_managers_apply_updates_request_resource: "RegionInstanceGroupManagersApplyUpdatesRequest" = proto.Field(
        proto.MESSAGE,
        number=76248318,
        message="RegionInstanceGroupManagersApplyUpdatesRequest",
    )


class AttachDiskInstanceRequest(proto.Message):
    r"""A request message for Instances.AttachDisk. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        attached_disk_resource (google.cloud.compute_v1.types.AttachedDisk):
            The body resource for this request
        force_attach (bool):
            Whether to force attach the regional disk
            even if it's currently attached to another
            instance. If you try to force attach a zonal
            disk to an instance, you will receive an error.

            This field is a member of `oneof`_ ``_force_attach``.
        instance (str):
            The instance name for this request.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    attached_disk_resource: "AttachedDisk" = proto.Field(
        proto.MESSAGE,
        number=90605845,
        message="AttachedDisk",
    )
    force_attach: bool = proto.Field(
        proto.BOOL,
        number=142758425,
        optional=True,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for
    GlobalNetworkEndpointGroups.AttachNetworkEndpoints. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        global_network_endpoint_groups_attach_endpoints_request_resource (google.cloud.compute_v1.types.GlobalNetworkEndpointGroupsAttachEndpointsRequest):
            The body resource for this request
        network_endpoint_group (str):
            The name of the network endpoint group where
            you are attaching network endpoints to. It
            should comply with RFC1035.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    global_network_endpoint_groups_attach_endpoints_request_resource: "GlobalNetworkEndpointGroupsAttachEndpointsRequest" = proto.Field(
        proto.MESSAGE,
        number=30691563,
        message="GlobalNetworkEndpointGroupsAttachEndpointsRequest",
    )
    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class AttachNetworkEndpointsNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for
    NetworkEndpointGroups.AttachNetworkEndpoints. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_endpoint_group (str):
            The name of the network endpoint group where
            you are attaching network endpoints to. It
            should comply with RFC1035.
        network_endpoint_groups_attach_endpoints_request_resource (google.cloud.compute_v1.types.NetworkEndpointGroupsAttachEndpointsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the network
            endpoint group is located. It should comply with
            RFC1035.
    """

    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    network_endpoint_groups_attach_endpoints_request_resource: "NetworkEndpointGroupsAttachEndpointsRequest" = proto.Field(
        proto.MESSAGE,
        number=531079,
        message="NetworkEndpointGroupsAttachEndpointsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class AttachedDisk(proto.Message):
    r"""An instance-attached disk resource.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        architecture (str):
            [Output Only] The architecture of the attached disk. Valid
            values are ARM64 or X86_64. Check the Architecture enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_architecture``.
        auto_delete (bool):
            Specifies whether the disk will be
            auto-deleted when the instance is deleted (but
            not when the disk is detached from the
            instance).

            This field is a member of `oneof`_ ``_auto_delete``.
        boot (bool):
            Indicates that this is a boot disk. The
            virtual machine will use the first partition of
            the disk for its root filesystem.

            This field is a member of `oneof`_ ``_boot``.
        device_name (str):
            Specifies a unique device name of your choice that is
            reflected into the /dev/disk/by-id/google-\* tree of a Linux
            operating system running within the instance. This name can
            be used to reference the device for mounting, resizing, and
            so on, from within the instance. If not specified, the
            server chooses a default device name to apply to this disk,
            in the form persistent-disk-x, where x is a number assigned
            by Google Compute Engine. This field is only applicable for
            persistent disks.

            This field is a member of `oneof`_ ``_device_name``.
        disk_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            Encrypts or decrypts a disk using a
            customer-supplied encryption key. If you are
            creating a new disk, this field encrypts the new
            disk using an encryption key that you provide.
            If you are attaching an existing disk that is
            already encrypted, this field decrypts the disk
            using the customer-supplied encryption key. If
            you encrypt a disk using a customer-supplied
            key, you must provide the same key again when
            you attempt to use this resource at a later
            time. For example, you must provide the key when
            you create a snapshot or an image from the disk
            or when you attach the disk to a virtual machine
            instance. If you do not provide an encryption
            key, then the disk will be encrypted using an
            automatically generated key and you do not need
            to provide a key to use the disk later. Instance
            templates do not store customer-supplied
            encryption keys, so you cannot use your own keys
            to encrypt disks in a managed instance group.

            This field is a member of `oneof`_ ``_disk_encryption_key``.
        disk_size_gb (int):
            The size of the disk in GB.

            This field is a member of `oneof`_ ``_disk_size_gb``.
        force_attach (bool):
            [Input Only] Whether to force attach the regional disk even
            if it's currently attached to another instance. If you try
            to force attach a zonal disk to an instance, you will
            receive an error.

            This field is a member of `oneof`_ ``_force_attach``.
        guest_os_features (MutableSequence[google.cloud.compute_v1.types.GuestOsFeature]):
            A list of features to enable on the guest
            operating system. Applicable only for bootable
            images. Read Enabling guest operating system
            features to see a list of available options.
        index (int):
            [Output Only] A zero-based index to this disk, where 0 is
            reserved for the boot disk. If you have many disks attached
            to an instance, each disk would have a unique index number.

            This field is a member of `oneof`_ ``_index``.
        initialize_params (google.cloud.compute_v1.types.AttachedDiskInitializeParams):
            [Input Only] Specifies the parameters for a new disk that
            will be created alongside the new instance. Use
            initialization parameters to create boot disks or local SSDs
            attached to the new instance. This property is mutually
            exclusive with the source property; you can only define one
            or the other, but not both.

            This field is a member of `oneof`_ ``_initialize_params``.
        interface (str):
            Specifies the disk interface to use for
            attaching this disk, which is either SCSI or
            NVME. For most machine types, the default is
            SCSI. Local SSDs can use either NVME or SCSI. In
            certain configurations, persistent disks can use
            NVMe. For more information, see About persistent
            disks. Check the Interface enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_interface``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#attachedDisk for attached disks.

            This field is a member of `oneof`_ ``_kind``.
        licenses (MutableSequence[str]):
            [Output Only] Any valid publicly visible licenses.
        mode (str):
            The mode in which to attach this disk, either READ_WRITE or
            READ_ONLY. If not specified, the default is to attach the
            disk in READ_WRITE mode. Check the Mode enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_mode``.
        shielded_instance_initial_state (google.cloud.compute_v1.types.InitialStateConfig):
            [Output Only] shielded vm initial state stored on disk

            This field is a member of `oneof`_ ``_shielded_instance_initial_state``.
        source (str):
            Specifies a valid partial or full URL to an
            existing Persistent Disk resource. When creating
            a new instance, one of
            initializeParams.sourceImage or
            initializeParams.sourceSnapshot or disks.source
            is required except for local SSD. If desired,
            you can also attach existing non-root persistent
            disks using this property. This field is only
            applicable for persistent disks. Note that for
            InstanceTemplate, specify the disk name for
            zonal disk, and the URL for regional disk.

            This field is a member of `oneof`_ ``_source``.
        type_ (str):
            Specifies the type of the disk, either
            SCRATCH or PERSISTENT. If not specified, the
            default is PERSISTENT. Check the Type enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Architecture(proto.Enum):
        r"""[Output Only] The architecture of the attached disk. Valid values
        are ARM64 or X86_64.

        Values:
            UNDEFINED_ARCHITECTURE (0):
                A value indicating that the enum field is not
                set.
            ARCHITECTURE_UNSPECIFIED (394750507):
                Default value indicating Architecture is not
                set.
            ARM64 (62547450):
                Machines with architecture ARM64
            X86_64 (425300551):
                Machines with architecture X86_64
        """
        UNDEFINED_ARCHITECTURE = 0
        ARCHITECTURE_UNSPECIFIED = 394750507
        ARM64 = 62547450
        X86_64 = 425300551

    class Interface(proto.Enum):
        r"""Specifies the disk interface to use for attaching this disk,
        which is either SCSI or NVME. For most machine types, the
        default is SCSI. Local SSDs can use either NVME or SCSI. In
        certain configurations, persistent disks can use NVMe. For more
        information, see About persistent disks.

        Values:
            UNDEFINED_INTERFACE (0):
                A value indicating that the enum field is not
                set.
            NVME (2408800):
                No description available.
            SCSI (2539686):
                No description available.
        """
        UNDEFINED_INTERFACE = 0
        NVME = 2408800
        SCSI = 2539686

    class Mode(proto.Enum):
        r"""The mode in which to attach this disk, either READ_WRITE or
        READ_ONLY. If not specified, the default is to attach the disk in
        READ_WRITE mode.

        Values:
            UNDEFINED_MODE (0):
                A value indicating that the enum field is not
                set.
            READ_ONLY (91950261):
                Attaches this disk in read-only mode.
                Multiple virtual machines can use a disk in
                read-only mode at a time.
            READ_WRITE (173607894):
                *[Default]* Attaches this disk in read-write mode. Only one
                virtual machine at a time can be attached to a disk in
                read-write mode.
        """
        UNDEFINED_MODE = 0
        READ_ONLY = 91950261
        READ_WRITE = 173607894

    class Type(proto.Enum):
        r"""Specifies the type of the disk, either SCRATCH or PERSISTENT.
        If not specified, the default is PERSISTENT.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            PERSISTENT (460683927):
                No description available.
            SCRATCH (496778970):
                No description available.
        """
        UNDEFINED_TYPE = 0
        PERSISTENT = 460683927
        SCRATCH = 496778970

    architecture: str = proto.Field(
        proto.STRING,
        number=302803283,
        optional=True,
    )
    auto_delete: bool = proto.Field(
        proto.BOOL,
        number=464761403,
        optional=True,
    )
    boot: bool = proto.Field(
        proto.BOOL,
        number=3029746,
        optional=True,
    )
    device_name: str = proto.Field(
        proto.STRING,
        number=67541716,
        optional=True,
    )
    disk_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=271660677,
        optional=True,
        message="CustomerEncryptionKey",
    )
    disk_size_gb: int = proto.Field(
        proto.INT64,
        number=316263735,
        optional=True,
    )
    force_attach: bool = proto.Field(
        proto.BOOL,
        number=142758425,
        optional=True,
    )
    guest_os_features: MutableSequence["GuestOsFeature"] = proto.RepeatedField(
        proto.MESSAGE,
        number=79294545,
        message="GuestOsFeature",
    )
    index: int = proto.Field(
        proto.INT32,
        number=100346066,
        optional=True,
    )
    initialize_params: "AttachedDiskInitializeParams" = proto.Field(
        proto.MESSAGE,
        number=17697045,
        optional=True,
        message="AttachedDiskInitializeParams",
    )
    interface: str = proto.Field(
        proto.STRING,
        number=502623545,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    licenses: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=337642578,
    )
    mode: str = proto.Field(
        proto.STRING,
        number=3357091,
        optional=True,
    )
    shielded_instance_initial_state: "InitialStateConfig" = proto.Field(
        proto.MESSAGE,
        number=192356867,
        optional=True,
        message="InitialStateConfig",
    )
    source: str = proto.Field(
        proto.STRING,
        number=177235995,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class AttachedDiskInitializeParams(proto.Message):
    r"""[Input Only] Specifies the parameters for a new disk that will be
    created alongside the new instance. Use initialization parameters to
    create boot disks or local SSDs attached to the new instance. This
    field is persisted and returned for instanceTemplate and not
    returned in the context of instance. This property is mutually
    exclusive with the source property; you can only define one or the
    other, but not both.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        architecture (str):
            The architecture of the attached disk. Valid values are
            arm64 or x86_64. Check the Architecture enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_architecture``.
        description (str):
            An optional description. Provide this
            property when creating the disk.

            This field is a member of `oneof`_ ``_description``.
        disk_name (str):
            Specifies the disk name. If not specified,
            the default is to use the name of the instance.
            If a disk with the same name already exists in
            the given region, the existing disk is attached
            to the new instance and the new disk is not
            created.

            This field is a member of `oneof`_ ``_disk_name``.
        disk_size_gb (int):
            Specifies the size of the disk in base-2 GB.
            The size must be at least 10 GB. If you specify
            a sourceImage, which is required for boot disks,
            the default size is the size of the sourceImage.
            If you do not specify a sourceImage, the default
            disk size is 500 GB.

            This field is a member of `oneof`_ ``_disk_size_gb``.
        disk_type (str):
            Specifies the disk type to use to create the
            instance. If not specified, the default is
            pd-standard, specified using the full URL. For
            example:
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /diskTypes/pd-standard For a full list of
            acceptable values, see Persistent disk types. If
            you specify this field when creating a VM, you
            can provide either the full or partial URL. For
            example, the following values are valid: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /diskTypes/diskType -
            projects/project/zones/zone/diskTypes/diskType -
            zones/zone/diskTypes/diskType If you specify
            this field when creating or updating an instance
            template or all-instances configuration, specify
            the type of the disk, not the URL. For example:
            pd-standard.

            This field is a member of `oneof`_ ``_disk_type``.
        labels (MutableMapping[str, str]):
            Labels to apply to this disk. These can be
            later modified by the disks.setLabels method.
            This field is only applicable for persistent
            disks.
        licenses (MutableSequence[str]):
            A list of publicly visible licenses. Reserved
            for Google's use.
        on_update_action (str):
            Specifies which action to take on instance
            update with this disk. Default is to use the
            existing disk. Check the OnUpdateAction enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_on_update_action``.
        provisioned_iops (int):
            Indicates how many IOPS to provision for the
            disk. This sets the number of I/O operations per
            second that the disk can handle. Values must be
            between 10,000 and 120,000. For more details,
            see the Extreme persistent disk documentation.

            This field is a member of `oneof`_ ``_provisioned_iops``.
        resource_manager_tags (MutableMapping[str, str]):
            Resource manager tags to be bound to the disk. 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.
        resource_policies (MutableSequence[str]):
            Resource policies applied to this disk for
            automatic snapshot creations. Specified using
            the full or partial URL. For instance template,
            specify only the resource policy name.
        source_image (str):
            The source image to create this disk. When
            creating a new instance, one of
            initializeParams.sourceImage or
            initializeParams.sourceSnapshot or disks.source
            is required except for local SSD. To create a
            disk with one of the public operating system
            images, specify the image by its family name.
            For example, specify family/debian-9 to use the
            latest Debian 9 image:
            projects/debian-cloud/global/images/family/debian-9
            Alternatively, use a specific version of a
            public operating system image:
            projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD
            To create a disk with a custom image that you
            created, specify the image name in the following
            format: global/images/my-custom-image You can
            also specify a custom image by its image family,
            which returns the latest version of the image in
            that family. Replace the image name with
            family/family-name:
            global/images/family/my-image-family If the
            source image is deleted later, this field will
            not be set.

            This field is a member of `oneof`_ ``_source_image``.
        source_image_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The customer-supplied encryption key of the
            source image. Required if the source image is
            protected by a customer-supplied encryption key.
            InstanceTemplate and InstancePropertiesPatch do
            not store customer-supplied encryption keys, so
            you cannot create disks for instances in a
            managed instance group if the source images are
            encrypted with your own keys.

            This field is a member of `oneof`_ ``_source_image_encryption_key``.
        source_snapshot (str):
            The source snapshot to create this disk. When
            creating a new instance, one of
            initializeParams.sourceSnapshot or
            initializeParams.sourceImage or disks.source is
            required except for local SSD. To create a disk
            with a snapshot that you created, specify the
            snapshot name in the following format:
            global/snapshots/my-backup If the source
            snapshot is deleted later, this field will not
            be set.

            This field is a member of `oneof`_ ``_source_snapshot``.
        source_snapshot_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The customer-supplied encryption key of the
            source snapshot.

            This field is a member of `oneof`_ ``_source_snapshot_encryption_key``.
    """

    class Architecture(proto.Enum):
        r"""The architecture of the attached disk. Valid values are arm64 or
        x86_64.

        Values:
            UNDEFINED_ARCHITECTURE (0):
                A value indicating that the enum field is not
                set.
            ARCHITECTURE_UNSPECIFIED (394750507):
                Default value indicating Architecture is not
                set.
            ARM64 (62547450):
                Machines with architecture ARM64
            X86_64 (425300551):
                Machines with architecture X86_64
        """
        UNDEFINED_ARCHITECTURE = 0
        ARCHITECTURE_UNSPECIFIED = 394750507
        ARM64 = 62547450
        X86_64 = 425300551

    class OnUpdateAction(proto.Enum):
        r"""Specifies which action to take on instance update with this
        disk. Default is to use the existing disk.

        Values:
            UNDEFINED_ON_UPDATE_ACTION (0):
                A value indicating that the enum field is not
                set.
            RECREATE_DISK (494767853):
                Always recreate the disk.
            RECREATE_DISK_IF_SOURCE_CHANGED (398099712):
                Recreate the disk if source (image, snapshot)
                of this disk is different from source of
                existing disk.
            USE_EXISTING_DISK (232682233):
                Use the existing disk, this is the default
                behaviour.
        """
        UNDEFINED_ON_UPDATE_ACTION = 0
        RECREATE_DISK = 494767853
        RECREATE_DISK_IF_SOURCE_CHANGED = 398099712
        USE_EXISTING_DISK = 232682233

    architecture: str = proto.Field(
        proto.STRING,
        number=302803283,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    disk_name: str = proto.Field(
        proto.STRING,
        number=92807149,
        optional=True,
    )
    disk_size_gb: int = proto.Field(
        proto.INT64,
        number=316263735,
        optional=True,
    )
    disk_type: str = proto.Field(
        proto.STRING,
        number=93009052,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    licenses: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=337642578,
    )
    on_update_action: str = proto.Field(
        proto.STRING,
        number=202451980,
        optional=True,
    )
    provisioned_iops: int = proto.Field(
        proto.INT64,
        number=186769108,
        optional=True,
    )
    resource_manager_tags: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=377671164,
    )
    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )
    source_image: str = proto.Field(
        proto.STRING,
        number=50443319,
        optional=True,
    )
    source_image_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=381503659,
        optional=True,
        message="CustomerEncryptionKey",
    )
    source_snapshot: str = proto.Field(
        proto.STRING,
        number=126061928,
        optional=True,
    )
    source_snapshot_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=303679322,
        optional=True,
        message="CustomerEncryptionKey",
    )


class AuditConfig(proto.Message):
    r"""Specifies the audit configuration for a service. The configuration
    determines which permission types are logged, and what identities,
    if any, are exempted from logging. An AuditConfig must have one or
    more AuditLogConfigs. If there are AuditConfigs for both
    ``allServices`` and a specific service, the union of the two
    AuditConfigs is used for that service: the log_types specified in
    each AuditConfig are enabled, and the exempted_members in each
    AuditLogConfig are exempted. Example Policy with multiple
    AuditConfigs: { "audit_configs": [ { "service": "allServices",
    "audit_log_configs": [ { "log_type": "DATA_READ",
    "exempted_members": [ "user:jose@example.com" ] }, { "log_type":
    "DATA_WRITE" }, { "log_type": "ADMIN_READ" } ] }, { "service":
    "sampleservice.googleapis.com", "audit_log_configs": [ { "log_type":
    "DATA_READ" }, { "log_type": "DATA_WRITE", "exempted_members": [
    "user:aliya@example.com" ] } ] } ] } For sampleservice, this policy
    enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also
    exempts jose@example.com from DATA_READ logging, and
    aliya@example.com from DATA_WRITE logging.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        audit_log_configs (MutableSequence[google.cloud.compute_v1.types.AuditLogConfig]):
            The configuration for logging of each type of
            permission.
        exempted_members (MutableSequence[str]):
            This is deprecated and has no effect. Do not
            use.
        service (str):
            Specifies a service that will be enabled for audit logging.
            For example, ``storage.googleapis.com``,
            ``cloudsql.googleapis.com``. ``allServices`` is a special
            value that covers all services.

            This field is a member of `oneof`_ ``_service``.
    """

    audit_log_configs: MutableSequence["AuditLogConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=488420626,
        message="AuditLogConfig",
    )
    exempted_members: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=232615576,
    )
    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )


class AuditLogConfig(proto.Message):
    r"""Provides the configuration for logging a type of permissions.
    Example: { "audit_log_configs": [ { "log_type": "DATA_READ",
    "exempted_members": [ "user:jose@example.com" ] }, { "log_type":
    "DATA_WRITE" } ] } This enables 'DATA_READ' and 'DATA_WRITE'
    logging, while exempting jose@example.com from DATA_READ logging.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        exempted_members (MutableSequence[str]):
            Specifies the identities that do not cause
            logging for this type of permission. Follows the
            same format of Binding.members.
        ignore_child_exemptions (bool):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_ignore_child_exemptions``.
        log_type (str):
            The log type that this config enables.
            Check the LogType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_log_type``.
    """

    class LogType(proto.Enum):
        r"""The log type that this config enables.

        Values:
            UNDEFINED_LOG_TYPE (0):
                A value indicating that the enum field is not
                set.
            ADMIN_READ (128951462):
                Admin reads. Example: CloudIAM getIamPolicy
            DATA_READ (305224971):
                Data reads. Example: CloudSQL Users list
            DATA_WRITE (340181738):
                Data writes. Example: CloudSQL Users create
            LOG_TYPE_UNSPECIFIED (154527053):
                Default case. Should never be this.
        """
        UNDEFINED_LOG_TYPE = 0
        ADMIN_READ = 128951462
        DATA_READ = 305224971
        DATA_WRITE = 340181738
        LOG_TYPE_UNSPECIFIED = 154527053

    exempted_members: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=232615576,
    )
    ignore_child_exemptions: bool = proto.Field(
        proto.BOOL,
        number=70141850,
        optional=True,
    )
    log_type: str = proto.Field(
        proto.STRING,
        number=403115861,
        optional=True,
    )


class AuthorizationLoggingOptions(proto.Message):
    r"""This is deprecated and has no effect. Do not use.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        permission_type (str):
            This is deprecated and has no effect. Do not
            use. Check the PermissionType enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_permission_type``.
    """

    class PermissionType(proto.Enum):
        r"""This is deprecated and has no effect. Do not use.

        Values:
            UNDEFINED_PERMISSION_TYPE (0):
                A value indicating that the enum field is not
                set.
            ADMIN_READ (128951462):
                This is deprecated and has no effect. Do not
                use.
            ADMIN_WRITE (244412079):
                This is deprecated and has no effect. Do not
                use.
            DATA_READ (305224971):
                This is deprecated and has no effect. Do not
                use.
            DATA_WRITE (340181738):
                This is deprecated and has no effect. Do not
                use.
            PERMISSION_TYPE_UNSPECIFIED (440313346):
                This is deprecated and has no effect. Do not
                use.
        """
        UNDEFINED_PERMISSION_TYPE = 0
        ADMIN_READ = 128951462
        ADMIN_WRITE = 244412079
        DATA_READ = 305224971
        DATA_WRITE = 340181738
        PERMISSION_TYPE_UNSPECIFIED = 440313346

    permission_type: str = proto.Field(
        proto.STRING,
        number=525978538,
        optional=True,
    )


class Autoscaler(proto.Message):
    r"""Represents an Autoscaler resource. Google Compute Engine has two
    Autoscaler resources: \*
    `Zonal </compute/docs/reference/rest/v1/autoscalers>`__ \*
    `Regional </compute/docs/reference/rest/v1/regionAutoscalers>`__ Use
    autoscalers to automatically add or delete instances from a managed
    instance group according to your defined autoscaling policy. For
    more information, read Autoscaling Groups of Instances. For zonal
    managed instance groups resource, use the autoscaler resource. For
    regional managed instance groups, use the regionAutoscalers
    resource.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaling_policy (google.cloud.compute_v1.types.AutoscalingPolicy):
            The configuration parameters for the
            autoscaling algorithm. You can define one or
            more signals for an autoscaler: cpuUtilization,
            customMetricUtilizations, and
            loadBalancingUtilization. If none of these are
            specified, the default will be to autoscale
            based on cpuUtilization to 0.6 or 60%.

            This field is a member of `oneof`_ ``_autoscaling_policy``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#autoscaler for autoscalers.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        recommended_size (int):
            [Output Only] Target recommended MIG size (number of
            instances) computed by autoscaler. Autoscaler calculates the
            recommended MIG size even when the autoscaling policy mode
            is different from ON. This field is empty when autoscaler is
            not connected to an existing managed instance group or
            autoscaler did not generate its prediction.

            This field is a member of `oneof`_ ``_recommended_size``.
        region (str):
            [Output Only] URL of the region where the instance group
            resides (for autoscalers living in regional scope).

            This field is a member of `oneof`_ ``_region``.
        scaling_schedule_status (MutableMapping[str, google.cloud.compute_v1.types.ScalingScheduleStatus]):
            [Output Only] Status information of existing scaling
            schedules.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        status (str):
            [Output Only] The status of the autoscaler configuration.
            Current set of possible values: - PENDING: Autoscaler
            backend hasn't read new/updated configuration. - DELETING:
            Configuration is being deleted. - ACTIVE: Configuration is
            acknowledged to be effective. Some warnings might be present
            in the statusDetails field. - ERROR: Configuration has
            errors. Actionable for users. Details are present in the
            statusDetails field. New values might be added in the
            future. Check the Status enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_status``.
        status_details (MutableSequence[google.cloud.compute_v1.types.AutoscalerStatusDetails]):
            [Output Only] Human-readable details about the current state
            of the autoscaler. Read the documentation for Commonly
            returned status messages for examples of status messages you
            might encounter.
        target (str):
            URL of the managed instance group that this
            autoscaler will scale. This field is required
            when creating an autoscaler.

            This field is a member of `oneof`_ ``_target``.
        zone (str):
            [Output Only] URL of the zone where the instance group
            resides (for autoscalers living in zonal scope).

            This field is a member of `oneof`_ ``_zone``.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of the autoscaler configuration. Current
        set of possible values: - PENDING: Autoscaler backend hasn't read
        new/updated configuration. - DELETING: Configuration is being
        deleted. - ACTIVE: Configuration is acknowledged to be effective.
        Some warnings might be present in the statusDetails field. - ERROR:
        Configuration has errors. Actionable for users. Details are present
        in the statusDetails field. New values might be added in the future.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                Configuration is acknowledged to be effective
            DELETING (528602024):
                Configuration is being deleted
            ERROR (66247144):
                Configuration has errors. Actionable for
                users.
            PENDING (35394935):
                Autoscaler backend hasn't read new/updated
                configuration
        """
        UNDEFINED_STATUS = 0
        ACTIVE = 314733318
        DELETING = 528602024
        ERROR = 66247144
        PENDING = 35394935

    autoscaling_policy: "AutoscalingPolicy" = proto.Field(
        proto.MESSAGE,
        number=221950041,
        optional=True,
        message="AutoscalingPolicy",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    recommended_size: int = proto.Field(
        proto.INT32,
        number=257915749,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    scaling_schedule_status: MutableMapping[
        str, "ScalingScheduleStatus"
    ] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=465950178,
        message="ScalingScheduleStatus",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    status_details: MutableSequence["AutoscalerStatusDetails"] = proto.RepeatedField(
        proto.MESSAGE,
        number=363353845,
        message="AutoscalerStatusDetails",
    )
    target: str = proto.Field(
        proto.STRING,
        number=192835985,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class AutoscalerAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.AutoscalersScopedList]):
            A list of AutoscalersScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#autoscalerAggregatedList for aggregated lists of
            autoscalers.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources. end_interface:
            MixerListResponseWithEtagBuilder
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "AutoscalersScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="AutoscalersScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class AutoscalerList(proto.Message):
    r"""Contains a list of Autoscaler resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Autoscaler]):
            A list of Autoscaler resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#autoscalerList for lists of autoscalers.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Autoscaler"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Autoscaler",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class AutoscalerStatusDetails(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        message (str):
            The status message.

            This field is a member of `oneof`_ ``_message``.
        type_ (str):
            The type of error, warning, or notice returned. Current set
            of possible values: - ALL_INSTANCES_UNHEALTHY (WARNING): All
            instances in the instance group are unhealthy (not in
            RUNNING state). - BACKEND_SERVICE_DOES_NOT_EXIST (ERROR):
            There is no backend service attached to the instance group.
            - CAPPED_AT_MAX_NUM_REPLICAS (WARNING): Autoscaler
            recommends a size greater than maxNumReplicas. -
            CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE (WARNING): The custom
            metric samples are not exported often enough to be a
            credible base for autoscaling. - CUSTOM_METRIC_INVALID
            (ERROR): The custom metric that was specified does not exist
            or does not have the necessary labels. - MIN_EQUALS_MAX
            (WARNING): The minNumReplicas is equal to maxNumReplicas.
            This means the autoscaler cannot add or remove instances
            from the instance group. - MISSING_CUSTOM_METRIC_DATA_POINTS
            (WARNING): The autoscaler did not receive any data from the
            custom metric configured for autoscaling. -
            MISSING_LOAD_BALANCING_DATA_POINTS (WARNING): The autoscaler
            is configured to scale based on a load balancing signal but
            the instance group has not received any requests from the
            load balancer. - MODE_OFF (WARNING): Autoscaling is turned
            off. The number of instances in the group won't change
            automatically. The autoscaling configuration is preserved. -
            MODE_ONLY_UP (WARNING): Autoscaling is in the "Autoscale
            only out" mode. The autoscaler can add instances but not
            remove any. - MORE_THAN_ONE_BACKEND_SERVICE (ERROR): The
            instance group cannot be autoscaled because it has more than
            one backend service attached to it. -
            NOT_ENOUGH_QUOTA_AVAILABLE (ERROR): There is insufficient
            quota for the necessary resources, such as CPU or number of
            instances. - REGION_RESOURCE_STOCKOUT (ERROR): Shown only
            for regional autoscalers: there is a resource stockout in
            the chosen region. - SCALING_TARGET_DOES_NOT_EXIST (ERROR):
            The target to be scaled does not exist. -
            UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION (ERROR):
            Autoscaling does not work with an HTTP/S load balancer that
            has been configured for maxRate. - ZONE_RESOURCE_STOCKOUT
            (ERROR): For zonal autoscalers: there is a resource stockout
            in the chosen zone. For regional autoscalers: in at least
            one of the zones you're using there is a resource stockout.
            New values might be added in the future. Some of the values
            might not be available in all API versions. Check the Type
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""The type of error, warning, or notice returned. Current set of
        possible values: - ALL_INSTANCES_UNHEALTHY (WARNING): All instances
        in the instance group are unhealthy (not in RUNNING state). -
        BACKEND_SERVICE_DOES_NOT_EXIST (ERROR): There is no backend service
        attached to the instance group. - CAPPED_AT_MAX_NUM_REPLICAS
        (WARNING): Autoscaler recommends a size greater than maxNumReplicas.
        - CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE (WARNING): The custom metric
        samples are not exported often enough to be a credible base for
        autoscaling. - CUSTOM_METRIC_INVALID (ERROR): The custom metric that
        was specified does not exist or does not have the necessary labels.
        - MIN_EQUALS_MAX (WARNING): The minNumReplicas is equal to
        maxNumReplicas. This means the autoscaler cannot add or remove
        instances from the instance group. -
        MISSING_CUSTOM_METRIC_DATA_POINTS (WARNING): The autoscaler did not
        receive any data from the custom metric configured for autoscaling.
        - MISSING_LOAD_BALANCING_DATA_POINTS (WARNING): The autoscaler is
        configured to scale based on a load balancing signal but the
        instance group has not received any requests from the load balancer.
        - MODE_OFF (WARNING): Autoscaling is turned off. The number of
        instances in the group won't change automatically. The autoscaling
        configuration is preserved. - MODE_ONLY_UP (WARNING): Autoscaling is
        in the "Autoscale only out" mode. The autoscaler can add instances
        but not remove any. - MORE_THAN_ONE_BACKEND_SERVICE (ERROR): The
        instance group cannot be autoscaled because it has more than one
        backend service attached to it. - NOT_ENOUGH_QUOTA_AVAILABLE
        (ERROR): There is insufficient quota for the necessary resources,
        such as CPU or number of instances. - REGION_RESOURCE_STOCKOUT
        (ERROR): Shown only for regional autoscalers: there is a resource
        stockout in the chosen region. - SCALING_TARGET_DOES_NOT_EXIST
        (ERROR): The target to be scaled does not exist. -
        UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION (ERROR):
        Autoscaling does not work with an HTTP/S load balancer that has been
        configured for maxRate. - ZONE_RESOURCE_STOCKOUT (ERROR): For zonal
        autoscalers: there is a resource stockout in the chosen zone. For
        regional autoscalers: in at least one of the zones you're using
        there is a resource stockout. New values might be added in the
        future. Some of the values might not be available in all API
        versions.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            ALL_INSTANCES_UNHEALTHY (404965477):
                All instances in the instance group are
                unhealthy (not in RUNNING state).
            BACKEND_SERVICE_DOES_NOT_EXIST (191417626):
                There is no backend service attached to the
                instance group.
            CAPPED_AT_MAX_NUM_REPLICAS (518617):
                Autoscaler recommends a size greater than
                maxNumReplicas.
            CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE (328964659):
                The custom metric samples are not exported
                often enough to be a credible base for
                autoscaling.
            CUSTOM_METRIC_INVALID (204430550):
                The custom metric that was specified does not
                exist or does not have the necessary labels.
            MIN_EQUALS_MAX (2821361):
                The minNumReplicas is equal to
                maxNumReplicas. This means the autoscaler cannot
                add or remove instances from the instance group.
            MISSING_CUSTOM_METRIC_DATA_POINTS (94885086):
                The autoscaler did not receive any data from
                the custom metric configured for autoscaling.
            MISSING_LOAD_BALANCING_DATA_POINTS (509858898):
                The autoscaler is configured to scale based
                on a load balancing signal but the instance
                group has not received any requests from the
                load balancer.
            MODE_OFF (164169907):
                Autoscaling is turned off. The number of
                instances in the group won't change
                automatically. The autoscaling configuration is
                preserved.
            MODE_ONLY_SCALE_OUT (3840994):
                Autoscaling is in the "Autoscale only scale
                out" mode. Instances in the group will be only
                added.
            MODE_ONLY_UP (100969842):
                Autoscaling is in the "Autoscale only out"
                mode. Instances in the group will be only added.
            MORE_THAN_ONE_BACKEND_SERVICE (151922141):
                The instance group cannot be autoscaled
                because it has more than one backend service
                attached to it.
            NOT_ENOUGH_QUOTA_AVAILABLE (403101631):
                There is insufficient quota for the necessary
                resources, such as CPU or number of instances.
            REGION_RESOURCE_STOCKOUT (528622846):
                Showed only for regional autoscalers: there
                is a resource stockout in the chosen region.
            SCALING_TARGET_DOES_NOT_EXIST (122636699):
                The target to be scaled does not exist.
            SCHEDULED_INSTANCES_GREATER_THAN_AUTOSCALER_MAX (29275586):
                For some scaling schedules
                minRequiredReplicas is greater than
                maxNumReplicas. Autoscaler always recommends at
                most maxNumReplicas instances.
            SCHEDULED_INSTANCES_LESS_THAN_AUTOSCALER_MIN (398287669):
                For some scaling schedules
                minRequiredReplicas is less than minNumReplicas.
                Autoscaler always recommends at least
                minNumReplicas instances.
            UNKNOWN (433141802):
                No description available.
            UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION (330845009):
                Autoscaling does not work with an HTTP/S load
                balancer that has been configured for maxRate.
            ZONE_RESOURCE_STOCKOUT (210200502):
                For zonal autoscalers: there is a resource
                stockout in the chosen zone. For regional
                autoscalers: in at least one of the zones you're
                using there is a resource stockout.
        """
        UNDEFINED_TYPE = 0
        ALL_INSTANCES_UNHEALTHY = 404965477
        BACKEND_SERVICE_DOES_NOT_EXIST = 191417626
        CAPPED_AT_MAX_NUM_REPLICAS = 518617
        CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE = 328964659
        CUSTOM_METRIC_INVALID = 204430550
        MIN_EQUALS_MAX = 2821361
        MISSING_CUSTOM_METRIC_DATA_POINTS = 94885086
        MISSING_LOAD_BALANCING_DATA_POINTS = 509858898
        MODE_OFF = 164169907
        MODE_ONLY_SCALE_OUT = 3840994
        MODE_ONLY_UP = 100969842
        MORE_THAN_ONE_BACKEND_SERVICE = 151922141
        NOT_ENOUGH_QUOTA_AVAILABLE = 403101631
        REGION_RESOURCE_STOCKOUT = 528622846
        SCALING_TARGET_DOES_NOT_EXIST = 122636699
        SCHEDULED_INSTANCES_GREATER_THAN_AUTOSCALER_MAX = 29275586
        SCHEDULED_INSTANCES_LESS_THAN_AUTOSCALER_MIN = 398287669
        UNKNOWN = 433141802
        UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION = 330845009
        ZONE_RESOURCE_STOCKOUT = 210200502

    message: str = proto.Field(
        proto.STRING,
        number=418054151,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class AutoscalersScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscalers (MutableSequence[google.cloud.compute_v1.types.Autoscaler]):
            [Output Only] A list of autoscalers contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of autoscalers when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    autoscalers: MutableSequence["Autoscaler"] = proto.RepeatedField(
        proto.MESSAGE,
        number=465771644,
        message="Autoscaler",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class AutoscalingPolicy(proto.Message):
    r"""Cloud Autoscaler policy.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        cool_down_period_sec (int):
            The number of seconds that the autoscaler
            waits before it starts collecting information
            from a new instance. This prevents the
            autoscaler from collecting information when the
            instance is initializing, during which the
            collected usage would not be reliable. The
            default time autoscaler waits is 60 seconds.
            Virtual machine initialization times might vary
            because of numerous factors. We recommend that
            you test how long an instance may take to
            initialize. To do this, create an instance and
            time the startup process.

            This field is a member of `oneof`_ ``_cool_down_period_sec``.
        cpu_utilization (google.cloud.compute_v1.types.AutoscalingPolicyCpuUtilization):
            Defines the CPU utilization policy that
            allows the autoscaler to scale based on the
            average CPU utilization of a managed instance
            group.

            This field is a member of `oneof`_ ``_cpu_utilization``.
        custom_metric_utilizations (MutableSequence[google.cloud.compute_v1.types.AutoscalingPolicyCustomMetricUtilization]):
            Configuration parameters of autoscaling based
            on a custom metric.
        load_balancing_utilization (google.cloud.compute_v1.types.AutoscalingPolicyLoadBalancingUtilization):
            Configuration parameters of autoscaling based
            on load balancer.

            This field is a member of `oneof`_ ``_load_balancing_utilization``.
        max_num_replicas (int):
            The maximum number of instances that the
            autoscaler can scale out to. This is required
            when creating or updating an autoscaler. The
            maximum number of replicas must not be lower
            than minimal number of replicas.

            This field is a member of `oneof`_ ``_max_num_replicas``.
        min_num_replicas (int):
            The minimum number of replicas that the
            autoscaler can scale in to. This cannot be less
            than 0. If not provided, autoscaler chooses a
            default value depending on maximum number of
            instances allowed.

            This field is a member of `oneof`_ ``_min_num_replicas``.
        mode (str):
            Defines operating mode for this policy.
            Check the Mode enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_mode``.
        scale_in_control (google.cloud.compute_v1.types.AutoscalingPolicyScaleInControl):

            This field is a member of `oneof`_ ``_scale_in_control``.
        scaling_schedules (MutableMapping[str, google.cloud.compute_v1.types.AutoscalingPolicyScalingSchedule]):
            Scaling schedules defined for an autoscaler. Multiple
            schedules can be set on an autoscaler, and they can overlap.
            During overlapping periods the greatest
            min_required_replicas of all scaling schedules is applied.
            Up to 128 scaling schedules are allowed.
    """

    class Mode(proto.Enum):
        r"""Defines operating mode for this policy.

        Values:
            UNDEFINED_MODE (0):
                A value indicating that the enum field is not
                set.
            OFF (78159):
                Do not automatically scale the MIG in or out. The
                recommended_size field contains the size of MIG that would
                be set if the actuation mode was enabled.
            ON (2527):
                Automatically scale the MIG in and out
                according to the policy.
            ONLY_SCALE_OUT (152713670):
                Automatically create VMs according to the
                policy, but do not scale the MIG in.
            ONLY_UP (478095374):
                Automatically create VMs according to the
                policy, but do not scale the MIG in.
        """
        UNDEFINED_MODE = 0
        OFF = 78159
        ON = 2527
        ONLY_SCALE_OUT = 152713670
        ONLY_UP = 478095374

    cool_down_period_sec: int = proto.Field(
        proto.INT32,
        number=107692954,
        optional=True,
    )
    cpu_utilization: "AutoscalingPolicyCpuUtilization" = proto.Field(
        proto.MESSAGE,
        number=381211147,
        optional=True,
        message="AutoscalingPolicyCpuUtilization",
    )
    custom_metric_utilizations: MutableSequence[
        "AutoscalingPolicyCustomMetricUtilization"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=131972850,
        message="AutoscalingPolicyCustomMetricUtilization",
    )
    load_balancing_utilization: "AutoscalingPolicyLoadBalancingUtilization" = (
        proto.Field(
            proto.MESSAGE,
            number=429746403,
            optional=True,
            message="AutoscalingPolicyLoadBalancingUtilization",
        )
    )
    max_num_replicas: int = proto.Field(
        proto.INT32,
        number=62327375,
        optional=True,
    )
    min_num_replicas: int = proto.Field(
        proto.INT32,
        number=535329825,
        optional=True,
    )
    mode: str = proto.Field(
        proto.STRING,
        number=3357091,
        optional=True,
    )
    scale_in_control: "AutoscalingPolicyScaleInControl" = proto.Field(
        proto.MESSAGE,
        number=527670872,
        optional=True,
        message="AutoscalingPolicyScaleInControl",
    )
    scaling_schedules: MutableMapping[
        str, "AutoscalingPolicyScalingSchedule"
    ] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=355416580,
        message="AutoscalingPolicyScalingSchedule",
    )


class AutoscalingPolicyCpuUtilization(proto.Message):
    r"""CPU utilization policy.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        predictive_method (str):
            Indicates whether predictive autoscaling based on CPU metric
            is enabled. Valid values are: \* NONE (default). No
            predictive method is used. The autoscaler scales the group
            to meet current demand based on real-time metrics. \*
            OPTIMIZE_AVAILABILITY. Predictive autoscaling improves
            availability by monitoring daily and weekly load patterns
            and scaling out ahead of anticipated demand. Check the
            PredictiveMethod enum for the list of possible values.

            This field is a member of `oneof`_ ``_predictive_method``.
        utilization_target (float):
            The target CPU utilization that the autoscaler maintains.
            Must be a float value in the range (0, 1]. If not specified,
            the default is 0.6. If the CPU level is below the target
            utilization, the autoscaler scales in the number of
            instances until it reaches the minimum number of instances
            you specified or until the average CPU of your instances
            reaches the target utilization. If the average CPU is above
            the target utilization, the autoscaler scales out until it
            reaches the maximum number of instances you specified or
            until the average utilization reaches the target
            utilization.

            This field is a member of `oneof`_ ``_utilization_target``.
    """

    class PredictiveMethod(proto.Enum):
        r"""Indicates whether predictive autoscaling based on CPU metric is
        enabled. Valid values are: \* NONE (default). No predictive method
        is used. The autoscaler scales the group to meet current demand
        based on real-time metrics. \* OPTIMIZE_AVAILABILITY. Predictive
        autoscaling improves availability by monitoring daily and weekly
        load patterns and scaling out ahead of anticipated demand.

        Values:
            UNDEFINED_PREDICTIVE_METHOD (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No predictive method is used. The autoscaler
                scales the group to meet current demand based on
                real-time metrics
            OPTIMIZE_AVAILABILITY (11629437):
                Predictive autoscaling improves availability
                by monitoring daily and weekly load patterns and
                scaling out ahead of anticipated demand.
        """
        UNDEFINED_PREDICTIVE_METHOD = 0
        NONE = 2402104
        OPTIMIZE_AVAILABILITY = 11629437

    predictive_method: str = proto.Field(
        proto.STRING,
        number=390220737,
        optional=True,
    )
    utilization_target: float = proto.Field(
        proto.DOUBLE,
        number=215905870,
        optional=True,
    )


class AutoscalingPolicyCustomMetricUtilization(proto.Message):
    r"""Custom utilization metric policy.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter string, compatible with a Stackdriver Monitoring
            filter string for TimeSeries.list API call. This filter is
            used to select a specific TimeSeries for the purpose of
            autoscaling and to determine whether the metric is exporting
            per-instance or per-group data. For the filter to be valid
            for autoscaling purposes, the following rules apply: - You
            can only use the AND operator for joining selectors. - You
            can only use direct equality comparison operator (=) without
            any functions for each selector. - You can specify the
            metric in both the filter string and in the metric field.
            However, if specified in both places, the metric must be
            identical. - The monitored resource type determines what
            kind of values are expected for the metric. If it is a
            gce_instance, the autoscaler expects the metric to include a
            separate TimeSeries for each instance in a group. In such a
            case, you cannot filter on resource labels. If the resource
            type is any other value, the autoscaler expects this metric
            to contain values that apply to the entire autoscaled
            instance group and resource label filtering can be performed
            to point autoscaler at the correct TimeSeries to scale upon.
            This is called a *per-group metric* for the purpose of
            autoscaling. If not specified, the type defaults to
            gce_instance. Try to provide a filter that is selective
            enough to pick just one TimeSeries for the autoscaled group
            or for each of the instances (if you are using gce_instance
            resource type). If multiple TimeSeries are returned upon the
            query execution, the autoscaler will sum their respective
            values to obtain its scaling value.

            This field is a member of `oneof`_ ``_filter``.
        metric (str):
            The identifier (type) of the Stackdriver
            Monitoring metric. The metric cannot have
            negative values. The metric must have a value
            type of INT64 or DOUBLE.

            This field is a member of `oneof`_ ``_metric``.
        single_instance_assignment (float):
            If scaling is based on a per-group metric value that
            represents the total amount of work to be done or resource
            usage, set this value to an amount assigned for a single
            instance of the scaled group. Autoscaler keeps the number of
            instances proportional to the value of this metric. The
            metric itself does not change value due to group resizing. A
            good metric to use with the target is for example
            pubsub.googleapis.com/subscription/num_undelivered_messages
            or a custom metric exporting the total number of requests
            coming to your instances. A bad example would be a metric
            exporting an average or median latency, since this value
            can't include a chunk assignable to a single instance, it
            could be better used with utilization_target instead.

            This field is a member of `oneof`_ ``_single_instance_assignment``.
        utilization_target (float):
            The target value of the metric that autoscaler maintains.
            This must be a positive value. A utilization metric scales
            number of virtual machines handling requests to increase or
            decrease proportionally to the metric. For example, a good
            metric to use as a utilization_target is
            https://www.googleapis.com/compute/v1/instance/network/received_bytes_count.
            The autoscaler works to keep this value constant for each of
            the instances.

            This field is a member of `oneof`_ ``_utilization_target``.
        utilization_target_type (str):
            Defines how target utilization value is expressed for a
            Stackdriver Monitoring metric. Either GAUGE,
            DELTA_PER_SECOND, or DELTA_PER_MINUTE. Check the
            UtilizationTargetType enum for the list of possible values.

            This field is a member of `oneof`_ ``_utilization_target_type``.
    """

    class UtilizationTargetType(proto.Enum):
        r"""Defines how target utilization value is expressed for a Stackdriver
        Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or
        DELTA_PER_MINUTE.

        Values:
            UNDEFINED_UTILIZATION_TARGET_TYPE (0):
                A value indicating that the enum field is not
                set.
            DELTA_PER_MINUTE (87432861):
                Sets the utilization target value for a
                cumulative or delta metric, expressed as the
                rate of growth per minute.
            DELTA_PER_SECOND (255180029):
                Sets the utilization target value for a
                cumulative or delta metric, expressed as the
                rate of growth per second.
            GAUGE (67590361):
                Sets the utilization target value for a gauge
                metric. The autoscaler will collect the average
                utilization of the virtual machines from the
                last couple of minutes, and compare the value to
                the utilization target value to perform
                autoscaling.
        """
        UNDEFINED_UTILIZATION_TARGET_TYPE = 0
        DELTA_PER_MINUTE = 87432861
        DELTA_PER_SECOND = 255180029
        GAUGE = 67590361

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    metric: str = proto.Field(
        proto.STRING,
        number=533067184,
        optional=True,
    )
    single_instance_assignment: float = proto.Field(
        proto.DOUBLE,
        number=504768064,
        optional=True,
    )
    utilization_target: float = proto.Field(
        proto.DOUBLE,
        number=215905870,
        optional=True,
    )
    utilization_target_type: str = proto.Field(
        proto.STRING,
        number=340169355,
        optional=True,
    )


class AutoscalingPolicyLoadBalancingUtilization(proto.Message):
    r"""Configuration parameters of autoscaling based on load
    balancing.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        utilization_target (float):
            Fraction of backend capacity utilization (set
            in HTTP(S) load balancing configuration) that
            the autoscaler maintains. Must be a positive
            float value. If not defined, the default is 0.8.

            This field is a member of `oneof`_ ``_utilization_target``.
    """

    utilization_target: float = proto.Field(
        proto.DOUBLE,
        number=215905870,
        optional=True,
    )


class AutoscalingPolicyScaleInControl(proto.Message):
    r"""Configuration that allows for slower scale in so that even if
    Autoscaler recommends an abrupt scale in of a MIG, it will be
    throttled as specified by the parameters below.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        max_scaled_in_replicas (google.cloud.compute_v1.types.FixedOrPercent):
            Maximum allowed number (or %) of VMs that can
            be deducted from the peak recommendation during
            the window autoscaler looks at when computing
            recommendations. Possibly all these VMs can be
            deleted at once so user service needs to be
            prepared to lose that many VMs in one step.

            This field is a member of `oneof`_ ``_max_scaled_in_replicas``.
        time_window_sec (int):
            How far back autoscaling looks when computing
            recommendations to include directives regarding
            slower scale in, as described above.

            This field is a member of `oneof`_ ``_time_window_sec``.
    """

    max_scaled_in_replicas: "FixedOrPercent" = proto.Field(
        proto.MESSAGE,
        number=180710123,
        optional=True,
        message="FixedOrPercent",
    )
    time_window_sec: int = proto.Field(
        proto.INT32,
        number=36405300,
        optional=True,
    )


class AutoscalingPolicyScalingSchedule(proto.Message):
    r"""Scaling based on user-defined schedule. The message describes
    a single scaling schedule. A scaling schedule changes the
    minimum number of VM instances an autoscaler can recommend,
    which can trigger scaling out.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        description (str):
            A description of a scaling schedule.

            This field is a member of `oneof`_ ``_description``.
        disabled (bool):
            A boolean value that specifies whether a
            scaling schedule can influence autoscaler
            recommendations. If set to true, then a scaling
            schedule has no effect. This field is optional,
            and its value is false by default.

            This field is a member of `oneof`_ ``_disabled``.
        duration_sec (int):
            The duration of time intervals, in seconds,
            for which this scaling schedule is to run. The
            minimum allowed value is 300. This field is
            required.

            This field is a member of `oneof`_ ``_duration_sec``.
        min_required_replicas (int):
            The minimum number of VM instances that the
            autoscaler will recommend in time intervals
            starting according to schedule. This field is
            required.

            This field is a member of `oneof`_ ``_min_required_replicas``.
        schedule (str):
            The start timestamps of time intervals when this scaling
            schedule is to provide a scaling signal. This field uses the
            extended cron format (with an optional year field). The
            expression can describe a single timestamp if the optional
            year is set, in which case the scaling schedule runs once.
            The schedule is interpreted with respect to time_zone. This
            field is required. Note: These timestamps only describe when
            autoscaler starts providing the scaling signal. The VMs need
            additional time to become serving.

            This field is a member of `oneof`_ ``_schedule``.
        time_zone (str):
            The time zone to use when interpreting the schedule. The
            value of this field must be a time zone name from the tz
            database: http://en.wikipedia.org/wiki/Tz_database. This
            field is assigned a default value of “UTC” if left empty.

            This field is a member of `oneof`_ ``_time_zone``.
    """

    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    disabled: bool = proto.Field(
        proto.BOOL,
        number=270940796,
        optional=True,
    )
    duration_sec: int = proto.Field(
        proto.INT32,
        number=212356902,
        optional=True,
    )
    min_required_replicas: int = proto.Field(
        proto.INT32,
        number=365514414,
        optional=True,
    )
    schedule: str = proto.Field(
        proto.STRING,
        number=375820951,
        optional=True,
    )
    time_zone: str = proto.Field(
        proto.STRING,
        number=36848094,
        optional=True,
    )


class Backend(proto.Message):
    r"""Message containing information of one individual backend.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        balancing_mode (str):
            Specifies how to determine whether the
            backend of a load balancer can handle additional
            traffic or is fully loaded. For usage
            guidelines, see Connection balancing mode.
            Backends must use compatible balancing modes.
            For more information, see Supported balancing
            modes and target capacity settings and
            Restrictions and guidance for instance groups.
            Note: Currently, if you use the API to configure
            incompatible balancing modes, the configuration
            might be accepted even though it has no impact
            and is ignored. Specifically,
            Backend.maxUtilization is ignored when
            Backend.balancingMode is RATE. In the future,
            this incompatible combination will be rejected.
            Check the BalancingMode enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_balancing_mode``.
        capacity_scaler (float):
            A multiplier applied to the backend's target capacity of its
            balancing mode. The default value is 1, which means the
            group serves up to 100% of its configured capacity
            (depending on balancingMode). A setting of 0 means the group
            is completely drained, offering 0% of its available
            capacity. The valid ranges are 0.0 and [0.1,1.0]. You cannot
            configure a setting larger than 0 and smaller than 0.1. You
            cannot configure a setting of 0 when there is only one
            backend attached to the backend service. Not available with
            backends that don't support using a balancingMode. This
            includes backends such as global internet NEGs, regional
            serverless NEGs, and PSC NEGs.

            This field is a member of `oneof`_ ``_capacity_scaler``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        failover (bool):
            This field designates whether this is a
            failover backend. More than one failover backend
            can be configured for a given BackendService.

            This field is a member of `oneof`_ ``_failover``.
        group (str):
            The fully-qualified URL of an instance group or network
            endpoint group (NEG) resource. To determine what types of
            backends a load balancer supports, see the `Backend services
            overview <https://cloud.google.com/load-balancing/docs/backend-service#backends>`__.
            You must use the *fully-qualified* URL (starting with
            https://www.googleapis.com/) to specify the instance group
            or NEG. Partial URLs are not supported.

            This field is a member of `oneof`_ ``_group``.
        max_connections (int):
            Defines a target maximum number of
            simultaneous connections. For usage guidelines,
            see Connection balancing mode and Utilization
            balancing mode. Not available if the backend's
            balancingMode is RATE.

            This field is a member of `oneof`_ ``_max_connections``.
        max_connections_per_endpoint (int):
            Defines a target maximum number of
            simultaneous connections. For usage guidelines,
            see Connection balancing mode and Utilization
            balancing mode. Not available if the backend's
            balancingMode is RATE.

            This field is a member of `oneof`_ ``_max_connections_per_endpoint``.
        max_connections_per_instance (int):
            Defines a target maximum number of
            simultaneous connections. For usage guidelines,
            see Connection balancing mode and Utilization
            balancing mode. Not available if the backend's
            balancingMode is RATE.

            This field is a member of `oneof`_ ``_max_connections_per_instance``.
        max_rate (int):
            Defines a maximum number of HTTP requests per
            second (RPS). For usage guidelines, see Rate
            balancing mode and Utilization balancing mode.
            Not available if the backend's balancingMode is
            CONNECTION.

            This field is a member of `oneof`_ ``_max_rate``.
        max_rate_per_endpoint (float):
            Defines a maximum target for requests per
            second (RPS). For usage guidelines, see Rate
            balancing mode and Utilization balancing mode.
            Not available if the backend's balancingMode is
            CONNECTION.

            This field is a member of `oneof`_ ``_max_rate_per_endpoint``.
        max_rate_per_instance (float):
            Defines a maximum target for requests per
            second (RPS). For usage guidelines, see Rate
            balancing mode and Utilization balancing mode.
            Not available if the backend's balancingMode is
            CONNECTION.

            This field is a member of `oneof`_ ``_max_rate_per_instance``.
        max_utilization (float):
            Optional parameter to define a target capacity for the
            UTILIZATION balancing mode. The valid range is [0.0, 1.0].
            For usage guidelines, see Utilization balancing mode.

            This field is a member of `oneof`_ ``_max_utilization``.
    """

    class BalancingMode(proto.Enum):
        r"""Specifies how to determine whether the backend of a load
        balancer can handle additional traffic or is fully loaded. For
        usage guidelines, see Connection balancing mode. Backends must
        use compatible balancing modes. For more information, see
        Supported balancing modes and target capacity settings and
        Restrictions and guidance for instance groups. Note: Currently,
        if you use the API to configure incompatible balancing modes,
        the configuration might be accepted even though it has no impact
        and is ignored. Specifically, Backend.maxUtilization is ignored
        when Backend.balancingMode is RATE. In the future, this
        incompatible combination will be rejected.

        Values:
            UNDEFINED_BALANCING_MODE (0):
                A value indicating that the enum field is not
                set.
            CONNECTION (246311646):
                Balance based on the number of simultaneous
                connections.
            RATE (2508000):
                Balance based on requests per second (RPS).
            UTILIZATION (157008386):
                Balance based on the backend utilization.
        """
        UNDEFINED_BALANCING_MODE = 0
        CONNECTION = 246311646
        RATE = 2508000
        UTILIZATION = 157008386

    balancing_mode: str = proto.Field(
        proto.STRING,
        number=430286217,
        optional=True,
    )
    capacity_scaler: float = proto.Field(
        proto.FLOAT,
        number=315958157,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    failover: bool = proto.Field(
        proto.BOOL,
        number=138892530,
        optional=True,
    )
    group: str = proto.Field(
        proto.STRING,
        number=98629247,
        optional=True,
    )
    max_connections: int = proto.Field(
        proto.INT32,
        number=110652154,
        optional=True,
    )
    max_connections_per_endpoint: int = proto.Field(
        proto.INT32,
        number=216904604,
        optional=True,
    )
    max_connections_per_instance: int = proto.Field(
        proto.INT32,
        number=104671900,
        optional=True,
    )
    max_rate: int = proto.Field(
        proto.INT32,
        number=408035035,
        optional=True,
    )
    max_rate_per_endpoint: float = proto.Field(
        proto.FLOAT,
        number=129832283,
        optional=True,
    )
    max_rate_per_instance: float = proto.Field(
        proto.FLOAT,
        number=17599579,
        optional=True,
    )
    max_utilization: float = proto.Field(
        proto.FLOAT,
        number=148192199,
        optional=True,
    )


class BackendBucket(proto.Message):
    r"""Represents a Cloud Storage Bucket resource. This Cloud
    Storage bucket resource is referenced by a URL map of a load
    balancer. For more information, read Backend Buckets.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bucket_name (str):
            Cloud Storage bucket name.

            This field is a member of `oneof`_ ``_bucket_name``.
        cdn_policy (google.cloud.compute_v1.types.BackendBucketCdnPolicy):
            Cloud CDN configuration for this
            BackendBucket.

            This field is a member of `oneof`_ ``_cdn_policy``.
        compression_mode (str):
            Compress text responses using Brotli or gzip
            compression, based on the client's
            Accept-Encoding header. Check the
            CompressionMode enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_compression_mode``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        custom_response_headers (MutableSequence[str]):
            Headers that the HTTP/S load balancer should
            add to proxied responses.
        description (str):
            An optional textual description of the
            resource; provided by the client when the
            resource is created.

            This field is a member of `oneof`_ ``_description``.
        edge_security_policy (str):
            [Output Only] The resource URL for the edge security policy
            associated with this backend bucket.

            This field is a member of `oneof`_ ``_edge_security_policy``.
        enable_cdn (bool):
            If true, enable Cloud CDN for this
            BackendBucket.

            This field is a member of `oneof`_ ``_enable_cdn``.
        id (int):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            Type of the resource.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
    """

    class CompressionMode(proto.Enum):
        r"""Compress text responses using Brotli or gzip compression,
        based on the client's Accept-Encoding header.

        Values:
            UNDEFINED_COMPRESSION_MODE (0):
                A value indicating that the enum field is not
                set.
            AUTOMATIC (165298699):
                Automatically uses the best compression based
                on the Accept-Encoding header sent by the
                client.
            DISABLED (516696700):
                Disables compression. Existing compressed
                responses cached by Cloud CDN will not be served
                to clients.
        """
        UNDEFINED_COMPRESSION_MODE = 0
        AUTOMATIC = 165298699
        DISABLED = 516696700

    bucket_name: str = proto.Field(
        proto.STRING,
        number=283610048,
        optional=True,
    )
    cdn_policy: "BackendBucketCdnPolicy" = proto.Field(
        proto.MESSAGE,
        number=213976452,
        optional=True,
        message="BackendBucketCdnPolicy",
    )
    compression_mode: str = proto.Field(
        proto.STRING,
        number=95520988,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    custom_response_headers: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=387539094,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    edge_security_policy: str = proto.Field(
        proto.STRING,
        number=41036943,
        optional=True,
    )
    enable_cdn: bool = proto.Field(
        proto.BOOL,
        number=282942321,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )


class BackendBucketCdnPolicy(proto.Message):
    r"""Message containing Cloud CDN configuration for a backend
    bucket.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bypass_cache_on_request_headers (MutableSequence[google.cloud.compute_v1.types.BackendBucketCdnPolicyBypassCacheOnRequestHeader]):
            Bypass the cache when the specified request
            headers are matched - e.g. Pragma or
            Authorization headers. Up to 5 headers can be
            specified. The cache is bypassed for all
            cdnPolicy.cacheMode settings.
        cache_key_policy (google.cloud.compute_v1.types.BackendBucketCdnPolicyCacheKeyPolicy):
            The CacheKeyPolicy for this CdnPolicy.

            This field is a member of `oneof`_ ``_cache_key_policy``.
        cache_mode (str):
            Specifies the cache setting for all responses from this
            backend. The possible values are: USE_ORIGIN_HEADERS
            Requires the origin to set valid caching headers to cache
            content. Responses without these headers will not be cached
            at Google's edge, and will require a full trip to the origin
            on every request, potentially impacting performance and
            increasing load on the origin server. FORCE_CACHE_ALL Cache
            all content, ignoring any "private", "no-store" or
            "no-cache" directives in Cache-Control response headers.
            Warning: this may result in Cloud CDN caching private,
            per-user (user identifiable) content. CACHE_ALL_STATIC
            Automatically cache static content, including common image
            formats, media (video and audio), and web assets (JavaScript
            and CSS). Requests and responses that are marked as
            uncacheable, as well as dynamic content (including HTML),
            will not be cached. Check the CacheMode enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_cache_mode``.
        client_ttl (int):
            Specifies a separate client (e.g. browser client) maximum
            TTL. This is used to clamp the max-age (or Expires) value
            sent to the client. With FORCE_CACHE_ALL, the lesser of
            client_ttl and default_ttl is used for the response max-age
            directive, along with a "public" directive. For cacheable
            content in CACHE_ALL_STATIC mode, client_ttl clamps the
            max-age from the origin (if specified), or else sets the
            response max-age directive to the lesser of the client_ttl
            and default_ttl, and also ensures a "public" cache-control
            directive is present. If a client TTL is not specified, a
            default value (1 hour) will be used. The maximum allowed
            value is 31,622,400s (1 year).

            This field is a member of `oneof`_ ``_client_ttl``.
        default_ttl (int):
            Specifies the default TTL for cached content served by this
            origin for responses that do not have an existing valid TTL
            (max-age or s-max-age). Setting a TTL of "0" means "always
            revalidate". The value of defaultTTL cannot be set to a
            value greater than that of maxTTL, but can be equal. When
            the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will
            overwrite the TTL set in all responses. The maximum allowed
            value is 31,622,400s (1 year), noting that infrequently
            accessed objects may be evicted from the cache before the
            defined TTL.

            This field is a member of `oneof`_ ``_default_ttl``.
        max_ttl (int):
            Specifies the maximum allowed TTL for cached
            content served by this origin. Cache directives
            that attempt to set a max-age or s-maxage higher
            than this, or an Expires header more than maxTTL
            seconds in the future will be capped at the
            value of maxTTL, as if it were the value of an
            s-maxage Cache-Control directive. Headers sent
            to the client will not be modified. Setting a
            TTL of "0" means "always revalidate". The
            maximum allowed value is 31,622,400s (1 year),
            noting that infrequently accessed objects may be
            evicted from the cache before the defined TTL.

            This field is a member of `oneof`_ ``_max_ttl``.
        negative_caching (bool):
            Negative caching allows per-status code TTLs to be set, in
            order to apply fine-grained caching for common errors or
            redirects. This can reduce the load on your origin and
            improve end-user experience by reducing response latency.
            When the cache mode is set to CACHE_ALL_STATIC or
            USE_ORIGIN_HEADERS, negative caching applies to responses
            with the specified response code that lack any
            Cache-Control, Expires, or Pragma: no-cache directives. When
            the cache mode is set to FORCE_CACHE_ALL, negative caching
            applies to all responses with the specified response code,
            and override any caching headers. By default, Cloud CDN will
            apply the following default TTLs to these status codes: HTTP
            300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m
            HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal
            Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected
            Request), 501 (Not Implemented): 60s. These defaults can be
            overridden in negative_caching_policy.

            This field is a member of `oneof`_ ``_negative_caching``.
        negative_caching_policy (MutableSequence[google.cloud.compute_v1.types.BackendBucketCdnPolicyNegativeCachingPolicy]):
            Sets a cache TTL for the specified HTTP status code.
            negative_caching must be enabled to configure
            negative_caching_policy. Omitting the policy and leaving
            negative_caching enabled will use Cloud CDN's default cache
            TTLs. Note that when specifying an explicit
            negative_caching_policy, you should take care to specify a
            cache TTL for all response codes that you wish to cache.
            Cloud CDN will not apply any default negative caching when a
            policy exists.
        request_coalescing (bool):
            If true then Cloud CDN will combine multiple
            concurrent cache fill requests into a small
            number of requests to the origin.

            This field is a member of `oneof`_ ``_request_coalescing``.
        serve_while_stale (int):
            Serve existing content from the cache (if
            available) when revalidating content with the
            origin, or when an error is encountered when
            refreshing the cache. This setting defines the
            default "max-stale" duration for any cached
            responses that do not specify a max-stale
            directive. Stale responses that exceed the TTL
            configured here will not be served. The default
            limit (max-stale) is 86400s (1 day), which will
            allow stale content to be served up to this
            limit beyond the max-age (or s-max-age) of a
            cached response. The maximum allowed value is
            604800 (1 week). Set this to zero (0) to disable
            serve-while-stale.

            This field is a member of `oneof`_ ``_serve_while_stale``.
        signed_url_cache_max_age_sec (int):
            Maximum number of seconds the response to a signed URL
            request will be considered fresh. After this time period,
            the response will be revalidated before being served.
            Defaults to 1hr (3600s). When serving responses to signed
            URL requests, Cloud CDN will internally behave as though all
            responses from this backend had a "Cache-Control: public,
            max-age=[TTL]" header, regardless of any existing
            Cache-Control header. The actual headers served in responses
            will not be altered.

            This field is a member of `oneof`_ ``_signed_url_cache_max_age_sec``.
        signed_url_key_names (MutableSequence[str]):
            [Output Only] Names of the keys for signing request URLs.
    """

    class CacheMode(proto.Enum):
        r"""Specifies the cache setting for all responses from this backend. The
        possible values are: USE_ORIGIN_HEADERS Requires the origin to set
        valid caching headers to cache content. Responses without these
        headers will not be cached at Google's edge, and will require a full
        trip to the origin on every request, potentially impacting
        performance and increasing load on the origin server.
        FORCE_CACHE_ALL Cache all content, ignoring any "private",
        "no-store" or "no-cache" directives in Cache-Control response
        headers. Warning: this may result in Cloud CDN caching private,
        per-user (user identifiable) content. CACHE_ALL_STATIC Automatically
        cache static content, including common image formats, media (video
        and audio), and web assets (JavaScript and CSS). Requests and
        responses that are marked as uncacheable, as well as dynamic content
        (including HTML), will not be cached.

        Values:
            UNDEFINED_CACHE_MODE (0):
                A value indicating that the enum field is not
                set.
            CACHE_ALL_STATIC (355027945):
                Automatically cache static content, including
                common image formats, media (video and audio),
                and web assets (JavaScript and CSS). Requests
                and responses that are marked as uncacheable, as
                well as dynamic content (including HTML), will
                not be cached.
            FORCE_CACHE_ALL (486026928):
                Cache all content, ignoring any "private",
                "no-store" or "no-cache" directives in
                Cache-Control response headers. Warning: this
                may result in Cloud CDN caching private,
                per-user (user identifiable) content.
            INVALID_CACHE_MODE (381295560):
                No description available.
            USE_ORIGIN_HEADERS (55380261):
                Requires the origin to set valid caching
                headers to cache content. Responses without
                these headers will not be cached at Google's
                edge, and will require a full trip to the origin
                on every request, potentially impacting
                performance and increasing load on the origin
                server.
        """
        UNDEFINED_CACHE_MODE = 0
        CACHE_ALL_STATIC = 355027945
        FORCE_CACHE_ALL = 486026928
        INVALID_CACHE_MODE = 381295560
        USE_ORIGIN_HEADERS = 55380261

    bypass_cache_on_request_headers: MutableSequence[
        "BackendBucketCdnPolicyBypassCacheOnRequestHeader"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=486203082,
        message="BackendBucketCdnPolicyBypassCacheOnRequestHeader",
    )
    cache_key_policy: "BackendBucketCdnPolicyCacheKeyPolicy" = proto.Field(
        proto.MESSAGE,
        number=159263727,
        optional=True,
        message="BackendBucketCdnPolicyCacheKeyPolicy",
    )
    cache_mode: str = proto.Field(
        proto.STRING,
        number=28877888,
        optional=True,
    )
    client_ttl: int = proto.Field(
        proto.INT32,
        number=29034360,
        optional=True,
    )
    default_ttl: int = proto.Field(
        proto.INT32,
        number=100253422,
        optional=True,
    )
    max_ttl: int = proto.Field(
        proto.INT32,
        number=307578001,
        optional=True,
    )
    negative_caching: bool = proto.Field(
        proto.BOOL,
        number=336110005,
        optional=True,
    )
    negative_caching_policy: MutableSequence[
        "BackendBucketCdnPolicyNegativeCachingPolicy"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=155359996,
        message="BackendBucketCdnPolicyNegativeCachingPolicy",
    )
    request_coalescing: bool = proto.Field(
        proto.BOOL,
        number=532808276,
        optional=True,
    )
    serve_while_stale: int = proto.Field(
        proto.INT32,
        number=236682203,
        optional=True,
    )
    signed_url_cache_max_age_sec: int = proto.Field(
        proto.INT64,
        number=269374534,
        optional=True,
    )
    signed_url_key_names: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=371848885,
    )


class BackendBucketCdnPolicyBypassCacheOnRequestHeader(proto.Message):
    r"""Bypass the cache when the specified request headers are present,
    e.g. Pragma or Authorization headers. Values are case insensitive.
    The presence of such a header overrides the cache_mode setting.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        header_name (str):
            The header field name to match on when
            bypassing cache. Values are case-insensitive.

            This field is a member of `oneof`_ ``_header_name``.
    """

    header_name: str = proto.Field(
        proto.STRING,
        number=110223613,
        optional=True,
    )


class BackendBucketCdnPolicyCacheKeyPolicy(proto.Message):
    r"""Message containing what to include in the cache key for a
    request for Cloud CDN.

    Attributes:
        include_http_headers (MutableSequence[str]):
            Allows HTTP request headers (by name) to be
            used in the cache key.
        query_string_whitelist (MutableSequence[str]):
            Names of query string parameters to include
            in cache keys. Default parameters are always
            included. '&' and '=' will be percent encoded
            and not treated as delimiters.
    """

    include_http_headers: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=2489606,
    )
    query_string_whitelist: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=52456496,
    )


class BackendBucketCdnPolicyNegativeCachingPolicy(proto.Message):
    r"""Specify CDN TTLs for response error codes.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        code (int):
            The HTTP status code to define a TTL against.
            Only HTTP status codes 300, 301, 302, 307, 308,
            404, 405, 410, 421, 451 and 501 are can be
            specified as values, and you cannot specify a
            status code more than once.

            This field is a member of `oneof`_ ``_code``.
        ttl (int):
            The TTL (in seconds) for which to cache
            responses with the corresponding status code.
            The maximum allowed value is 1800s (30 minutes),
            noting that infrequently accessed objects may be
            evicted from the cache before the defined TTL.

            This field is a member of `oneof`_ ``_ttl``.
    """

    code: int = proto.Field(
        proto.INT32,
        number=3059181,
        optional=True,
    )
    ttl: int = proto.Field(
        proto.INT32,
        number=115180,
        optional=True,
    )


class BackendBucketList(proto.Message):
    r"""Contains a list of BackendBucket resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.BackendBucket]):
            A list of BackendBucket resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["BackendBucket"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="BackendBucket",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class BackendService(proto.Message):
    r"""Represents a Backend Service resource. A backend service defines how
    Google Cloud load balancers distribute traffic. The backend service
    configuration contains a set of values, such as the protocol used to
    connect to backends, various distribution and session settings,
    health checks, and timeouts. These settings provide fine-grained
    control over how your load balancer behaves. Most of the settings
    have default values that allow for easy configuration if you need to
    get started quickly. Backend services in Google Compute Engine can
    be either regionally or globally scoped. \*
    `Global <https://cloud.google.com/compute/docs/reference/rest/v1/backendServices>`__
    \*
    `Regional <https://cloud.google.com/compute/docs/reference/rest/v1/regionBackendServices>`__
    For more information, see Backend Services.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        affinity_cookie_ttl_sec (int):
            Lifetime of cookies in seconds. This setting is applicable
            to external and internal HTTP(S) load balancers and Traffic
            Director and requires GENERATED_COOKIE or HTTP_COOKIE
            session affinity. If set to 0, the cookie is non-persistent
            and lasts only until the end of the browser session (or
            equivalent). The maximum allowed value is two weeks
            (1,209,600). Not supported when the backend service is
            referenced by a URL map that is bound to target gRPC proxy
            that has validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_affinity_cookie_ttl_sec``.
        backends (MutableSequence[google.cloud.compute_v1.types.Backend]):
            The list of backends that serve this
            BackendService.
        cdn_policy (google.cloud.compute_v1.types.BackendServiceCdnPolicy):
            Cloud CDN configuration for this
            BackendService. Only available for specified
            load balancer types.

            This field is a member of `oneof`_ ``_cdn_policy``.
        circuit_breakers (google.cloud.compute_v1.types.CircuitBreakers):

            This field is a member of `oneof`_ ``_circuit_breakers``.
        compression_mode (str):
            Compress text responses using Brotli or gzip
            compression, based on the client's
            Accept-Encoding header. Check the
            CompressionMode enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_compression_mode``.
        connection_draining (google.cloud.compute_v1.types.ConnectionDraining):

            This field is a member of `oneof`_ ``_connection_draining``.
        connection_tracking_policy (google.cloud.compute_v1.types.BackendServiceConnectionTrackingPolicy):
            Connection Tracking configuration for this
            BackendService. Connection tracking policy
            settings are only available for Network Load
            Balancing and Internal TCP/UDP Load Balancing.

            This field is a member of `oneof`_ ``_connection_tracking_policy``.
        consistent_hash (google.cloud.compute_v1.types.ConsistentHashLoadBalancerSettings):
            Consistent Hash-based load balancing can be used to provide
            soft session affinity based on HTTP headers, cookies or
            other properties. This load balancing policy is applicable
            only for HTTP connections. The affinity to a particular
            destination host will be lost when one or more hosts are
            added/removed from the destination service. This field
            specifies parameters that control consistent hashing. This
            field is only applicable when localityLbPolicy is set to
            MAGLEV or RING_HASH. This field is applicable to either: - A
            regional backend service with the service_protocol set to
            HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to
            INTERNAL_MANAGED. - A global backend service with the
            load_balancing_scheme set to INTERNAL_SELF_MANAGED.

            This field is a member of `oneof`_ ``_consistent_hash``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        custom_request_headers (MutableSequence[str]):
            Headers that the load balancer adds to proxied requests. See
            `Creating custom
            headers <https://cloud.google.com/load-balancing/docs/custom-headers>`__.
        custom_response_headers (MutableSequence[str]):
            Headers that the load balancer adds to proxied responses.
            See `Creating custom
            headers <https://cloud.google.com/load-balancing/docs/custom-headers>`__.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        edge_security_policy (str):
            [Output Only] The resource URL for the edge security policy
            associated with this backend service.

            This field is a member of `oneof`_ ``_edge_security_policy``.
        enable_c_d_n (bool):
            If true, enables Cloud CDN for the backend
            service of an external HTTP(S) load balancer.

            This field is a member of `oneof`_ ``_enable_c_d_n``.
        failover_policy (google.cloud.compute_v1.types.BackendServiceFailoverPolicy):
            Requires at least one backend instance group to be defined
            as a backup (failover) backend. For load balancers that have
            configurable failover: `Internal TCP/UDP Load
            Balancing <https://cloud.google.com/load-balancing/docs/internal/failover-overview>`__
            and `external TCP/UDP Load
            Balancing <https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview>`__.

            This field is a member of `oneof`_ ``_failover_policy``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a BackendService. An
            up-to-date fingerprint must be provided in order
            to update the BackendService, otherwise the
            request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve a
            BackendService.

            This field is a member of `oneof`_ ``_fingerprint``.
        health_checks (MutableSequence[str]):
            The list of URLs to the healthChecks,
            httpHealthChecks (legacy), or httpsHealthChecks
            (legacy) resource for health checking this
            backend service. Not all backend services
            support legacy health checks. See Load balancer
            guide. Currently, at most one health check can
            be specified for each backend service. Backend
            services with instance group or zonal NEG
            backends must have a health check. Backend
            services with internet or serverless NEG
            backends must not have a health check.
        iap (google.cloud.compute_v1.types.BackendServiceIAP):
            The configurations for Identity-Aware Proxy
            on this resource. Not available for Internal
            TCP/UDP Load Balancing and Network Load
            Balancing.

            This field is a member of `oneof`_ ``_iap``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of resource. Always
            compute#backendService for backend services.

            This field is a member of `oneof`_ ``_kind``.
        load_balancing_scheme (str):
            Specifies the load balancer type. A backend
            service created for one type of load balancer
            cannot be used with another. For more
            information, refer to Choosing a load balancer.
            Check the LoadBalancingScheme enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_load_balancing_scheme``.
        locality_lb_policies (MutableSequence[google.cloud.compute_v1.types.BackendServiceLocalityLoadBalancingPolicyConfig]):
            A list of locality load-balancing policies to be used in
            order of preference. When you use localityLbPolicies, you
            must set at least one value for either the
            localityLbPolicies[].policy or the
            localityLbPolicies[].customPolicy field. localityLbPolicies
            overrides any value set in the localityLbPolicy field. For
            an example of how to use this field, see Define a list of
            preferred policies. Caution: This field and its children are
            intended for use in a service mesh that includes gRPC
            clients only. Envoy proxies can't use backend services that
            have this configuration.
        locality_lb_policy (str):
            The load balancing algorithm used within the scope of the
            locality. The possible values are: - ROUND_ROBIN: This is a
            simple policy in which each healthy backend is selected in
            round robin order. This is the default. - LEAST_REQUEST: An
            O(1) algorithm which selects two random healthy hosts and
            picks the host which has fewer active requests. - RING_HASH:
            The ring/modulo hash load balancer implements consistent
            hashing to backends. The algorithm has the property that the
            addition/removal of a host from a set of N hosts only
            affects 1/N of the requests. - RANDOM: The load balancer
            selects a random healthy host. - ORIGINAL_DESTINATION:
            Backend host is selected based on the client connection
            metadata, i.e., connections are opened to the same address
            as the destination address of the incoming connection before
            the connection was redirected to the load balancer. -
            MAGLEV: used as a drop in replacement for the ring hash load
            balancer. Maglev is not as stable as ring hash but has
            faster table lookup build times and host selection times.
            For more information about Maglev, see
            https://ai.google/research/pubs/pub44824 This field is
            applicable to either: - A regional backend service with the
            service_protocol set to HTTP, HTTPS, or HTTP2, and
            load_balancing_scheme set to INTERNAL_MANAGED. - A global
            backend service with the load_balancing_scheme set to
            INTERNAL_SELF_MANAGED. If sessionAffinity is not NONE, and
            this field is not set to MAGLEV or RING_HASH, session
            affinity settings will not take effect. Only ROUND_ROBIN and
            RING_HASH are supported when the backend service is
            referenced by a URL map that is bound to target gRPC proxy
            that has validateForProxyless field set to true. Check the
            LocalityLbPolicy enum for the list of possible values.

            This field is a member of `oneof`_ ``_locality_lb_policy``.
        log_config (google.cloud.compute_v1.types.BackendServiceLogConfig):
            This field denotes the logging options for
            the load balancer traffic served by this backend
            service. If logging is enabled, logs will be
            exported to Stackdriver.

            This field is a member of `oneof`_ ``_log_config``.
        max_stream_duration (google.cloud.compute_v1.types.Duration):
            Specifies the default maximum duration (timeout) for streams
            to this service. Duration is computed from the beginning of
            the stream until the response has been completely processed,
            including all retries. A stream that does not complete in
            this duration is closed. If not specified, there will be no
            timeout limit, i.e. the maximum duration is infinite. This
            value can be overridden in the PathMatcher configuration of
            the UrlMap that references this backend service. This field
            is only allowed when the loadBalancingScheme of the backend
            service is INTERNAL_SELF_MANAGED.

            This field is a member of `oneof`_ ``_max_stream_duration``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            The URL of the network to which this backend
            service belongs. This field can only be
            specified when the load balancing scheme is set
            to INTERNAL.

            This field is a member of `oneof`_ ``_network``.
        outlier_detection (google.cloud.compute_v1.types.OutlierDetection):
            Settings controlling the eviction of unhealthy hosts from
            the load balancing pool for the backend service. If not set,
            this feature is considered disabled. This field is
            applicable to either: - A regional backend service with the
            service_protocol set to HTTP, HTTPS, HTTP2, or GRPC, and
            load_balancing_scheme set to INTERNAL_MANAGED. - A global
            backend service with the load_balancing_scheme set to
            INTERNAL_SELF_MANAGED.

            This field is a member of `oneof`_ ``_outlier_detection``.
        port (int):
            Deprecated in favor of portName. The TCP port
            to connect on the backend. The default value is
            80. For Internal TCP/UDP Load Balancing and
            Network Load Balancing, omit port.

            This field is a member of `oneof`_ ``_port``.
        port_name (str):
            A named port on a backend instance group representing the
            port for communication to the backend VMs in that group. The
            named port must be `defined on each backend instance
            group <https://cloud.google.com/load-balancing/docs/backend-service#named_ports>`__.
            This parameter has no meaning if the backends are NEGs. For
            Internal TCP/UDP Load Balancing and Network Load Balancing,
            omit port_name.

            This field is a member of `oneof`_ ``_port_name``.
        protocol (str):
            The protocol this BackendService uses to
            communicate with backends. Possible values are
            HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC.
            depending on the chosen load balancer or Traffic
            Director configuration. Refer to the
            documentation for the load balancers or for
            Traffic Director for more information. Must be
            set to GRPC when the backend service is
            referenced by a URL map that is bound to target
            gRPC proxy. Check the Protocol enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_protocol``.
        region (str):
            [Output Only] URL of the region where the regional backend
            service resides. This field is not applicable to global
            backend services. You must specify this field as part of the
            HTTP request URL. It is not settable as a field in the
            request body.

            This field is a member of `oneof`_ ``_region``.
        security_policy (str):
            [Output Only] The resource URL for the security policy
            associated with this backend service.

            This field is a member of `oneof`_ ``_security_policy``.
        security_settings (google.cloud.compute_v1.types.SecuritySettings):
            This field specifies the security settings that apply to
            this backend service. This field is applicable to a global
            backend service with the load_balancing_scheme set to
            INTERNAL_SELF_MANAGED.

            This field is a member of `oneof`_ ``_security_settings``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        service_bindings (MutableSequence[str]):
            URLs of networkservices.ServiceBinding resources. Can only
            be set if load balancing scheme is INTERNAL_SELF_MANAGED. If
            set, lists of backends and health checks must be both empty.
        session_affinity (str):
            Type of session affinity to use. The default is NONE. Only
            NONE and HEADER_FIELD are supported when the backend service
            is referenced by a URL map that is bound to target gRPC
            proxy that has validateForProxyless field set to true. For
            more details, see: `Session
            Affinity <https://cloud.google.com/load-balancing/docs/backend-service#session_affinity>`__.
            Check the SessionAffinity enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_session_affinity``.
        subsetting (google.cloud.compute_v1.types.Subsetting):

            This field is a member of `oneof`_ ``_subsetting``.
        timeout_sec (int):
            The backend service timeout has a different
            meaning depending on the type of load balancer.
            For more information see, Backend service
            settings. The default is 30 seconds. The full
            range of timeout values allowed goes from 1
            through 2,147,483,647 seconds. This value can be
            overridden in the PathMatcher configuration of
            the UrlMap that references this backend service.
            Not supported when the backend service is
            referenced by a URL map that is bound to target
            gRPC proxy that has validateForProxyless field
            set to true. Instead, use maxStreamDuration.

            This field is a member of `oneof`_ ``_timeout_sec``.
    """

    class CompressionMode(proto.Enum):
        r"""Compress text responses using Brotli or gzip compression,
        based on the client's Accept-Encoding header.

        Values:
            UNDEFINED_COMPRESSION_MODE (0):
                A value indicating that the enum field is not
                set.
            AUTOMATIC (165298699):
                Automatically uses the best compression based
                on the Accept-Encoding header sent by the
                client.
            DISABLED (516696700):
                Disables compression. Existing compressed
                responses cached by Cloud CDN will not be served
                to clients.
        """
        UNDEFINED_COMPRESSION_MODE = 0
        AUTOMATIC = 165298699
        DISABLED = 516696700

    class LoadBalancingScheme(proto.Enum):
        r"""Specifies the load balancer type. A backend service created
        for one type of load balancer cannot be used with another. For
        more information, refer to Choosing a load balancer.

        Values:
            UNDEFINED_LOAD_BALANCING_SCHEME (0):
                A value indicating that the enum field is not
                set.
            EXTERNAL (35607499):
                Signifies that this will be used for external
                HTTP(S), SSL Proxy, TCP Proxy, or Network Load
                Balancing
            EXTERNAL_MANAGED (512006923):
                Signifies that this will be used for External
                Managed HTTP(S) Load Balancing.
            INTERNAL (279295677):
                Signifies that this will be used for Internal
                TCP/UDP Load Balancing.
            INTERNAL_MANAGED (37350397):
                Signifies that this will be used for Internal
                HTTP(S) Load Balancing.
            INTERNAL_SELF_MANAGED (236211150):
                Signifies that this will be used by Traffic
                Director.
            INVALID_LOAD_BALANCING_SCHEME (275352060):
                No description available.
        """
        UNDEFINED_LOAD_BALANCING_SCHEME = 0
        EXTERNAL = 35607499
        EXTERNAL_MANAGED = 512006923
        INTERNAL = 279295677
        INTERNAL_MANAGED = 37350397
        INTERNAL_SELF_MANAGED = 236211150
        INVALID_LOAD_BALANCING_SCHEME = 275352060

    class LocalityLbPolicy(proto.Enum):
        r"""The load balancing algorithm used within the scope of the locality.
        The possible values are: - ROUND_ROBIN: This is a simple policy in
        which each healthy backend is selected in round robin order. This is
        the default. - LEAST_REQUEST: An O(1) algorithm which selects two
        random healthy hosts and picks the host which has fewer active
        requests. - RING_HASH: The ring/modulo hash load balancer implements
        consistent hashing to backends. The algorithm has the property that
        the addition/removal of a host from a set of N hosts only affects
        1/N of the requests. - RANDOM: The load balancer selects a random
        healthy host. - ORIGINAL_DESTINATION: Backend host is selected based
        on the client connection metadata, i.e., connections are opened to
        the same address as the destination address of the incoming
        connection before the connection was redirected to the load
        balancer. - MAGLEV: used as a drop in replacement for the ring hash
        load balancer. Maglev is not as stable as ring hash but has faster
        table lookup build times and host selection times. For more
        information about Maglev, see
        https://ai.google/research/pubs/pub44824 This field is applicable to
        either: - A regional backend service with the service_protocol set
        to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to
        INTERNAL_MANAGED. - A global backend service with the
        load_balancing_scheme set to INTERNAL_SELF_MANAGED. If
        sessionAffinity is not NONE, and this field is not set to MAGLEV or
        RING_HASH, session affinity settings will not take effect. Only
        ROUND_ROBIN and RING_HASH are supported when the backend service is
        referenced by a URL map that is bound to target gRPC proxy that has
        validateForProxyless field set to true.

        Values:
            UNDEFINED_LOCALITY_LB_POLICY (0):
                A value indicating that the enum field is not
                set.
            INVALID_LB_POLICY (323318707):
                No description available.
            LEAST_REQUEST (46604921):
                An O(1) algorithm which selects two random
                healthy hosts and picks the host which has fewer
                active requests.
            MAGLEV (119180266):
                This algorithm implements consistent hashing
                to backends. Maglev can be used as a drop in
                replacement for the ring hash load balancer.
                Maglev is not as stable as ring hash but has
                faster table lookup build times and host
                selection times. For more information about
                Maglev, see
                https://ai.google/research/pubs/pub44824
            ORIGINAL_DESTINATION (166297216):
                Backend host is selected based on the client
                connection metadata, i.e., connections are
                opened to the same address as the destination
                address of the incoming connection before the
                connection was redirected to the load balancer.
            RANDOM (262527171):
                The load balancer selects a random healthy
                host.
            RING_HASH (432795069):
                The ring/modulo hash load balancer implements
                consistent hashing to backends. The algorithm
                has the property that the addition/removal of a
                host from a set of N hosts only affects 1/N of
                the requests.
            ROUND_ROBIN (153895801):
                This is a simple policy in which each healthy
                backend is selected in round robin order. This
                is the default.
            WEIGHTED_MAGLEV (254930962):
                Per-instance weighted Load Balancing via health check
                reported weights. If set, the Backend Service must configure
                a non legacy HTTP-based Health Check, and health check
                replies are expected to contain non-standard HTTP response
                header field X-Load-Balancing-Endpoint-Weight to specify the
                per-instance weights. If set, Load Balancing is weighted
                based on the per-instance weights reported in the last
                processed health check replies, as long as every instance
                either reported a valid weight or had UNAVAILABLE_WEIGHT.
                Otherwise, Load Balancing remains equal-weight. This option
                is only supported in Network Load Balancing.
        """
        UNDEFINED_LOCALITY_LB_POLICY = 0
        INVALID_LB_POLICY = 323318707
        LEAST_REQUEST = 46604921
        MAGLEV = 119180266
        ORIGINAL_DESTINATION = 166297216
        RANDOM = 262527171
        RING_HASH = 432795069
        ROUND_ROBIN = 153895801
        WEIGHTED_MAGLEV = 254930962

    class Protocol(proto.Enum):
        r"""The protocol this BackendService uses to communicate with
        backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP
        or GRPC. depending on the chosen load balancer or Traffic
        Director configuration. Refer to the documentation for the load
        balancers or for Traffic Director for more information. Must be
        set to GRPC when the backend service is referenced by a URL map
        that is bound to target gRPC proxy.

        Values:
            UNDEFINED_PROTOCOL (0):
                A value indicating that the enum field is not
                set.
            GRPC (2196510):
                gRPC (available for Traffic Director).
            HTTP (2228360):
                No description available.
            HTTP2 (69079210):
                HTTP/2 with SSL.
            HTTPS (69079243):
                No description available.
            SSL (82412):
                TCP proxying with SSL.
            TCP (82881):
                TCP proxying or TCP pass-through.
            UDP (83873):
                UDP.
            UNSPECIFIED (526786327):
                If a Backend Service has UNSPECIFIED as its
                protocol, it can be used with any L3/L4
                Forwarding Rules.
        """
        UNDEFINED_PROTOCOL = 0
        GRPC = 2196510
        HTTP = 2228360
        HTTP2 = 69079210
        HTTPS = 69079243
        SSL = 82412
        TCP = 82881
        UDP = 83873
        UNSPECIFIED = 526786327

    class SessionAffinity(proto.Enum):
        r"""Type of session affinity to use. The default is NONE. Only NONE and
        HEADER_FIELD are supported when the backend service is referenced by
        a URL map that is bound to target gRPC proxy that has
        validateForProxyless field set to true. For more details, see:
        `Session
        Affinity <https://cloud.google.com/load-balancing/docs/backend-service#session_affinity>`__.

        Values:
            UNDEFINED_SESSION_AFFINITY (0):
                A value indicating that the enum field is not
                set.
            CLIENT_IP (345665051):
                2-tuple hash on packet's source and
                destination IP addresses. Connections from the
                same source IP address to the same destination
                IP address will be served by the same backend VM
                while that VM remains healthy.
            CLIENT_IP_NO_DESTINATION (106122516):
                1-tuple hash only on packet's source IP
                address. Connections from the same source IP
                address will be served by the same backend VM
                while that VM remains healthy. This option can
                only be used for Internal TCP/UDP Load
                Balancing.
            CLIENT_IP_PORT_PROTO (221722926):
                5-tuple hash on packet's source and
                destination IP addresses, IP protocol, and
                source and destination ports. Connections for
                the same IP protocol from the same source IP
                address and port to the same destination IP
                address and port will be served by the same
                backend VM while that VM remains healthy. This
                option cannot be used for HTTP(S) load
                balancing.
            CLIENT_IP_PROTO (25322148):
                3-tuple hash on packet's source and
                destination IP addresses, and IP protocol.
                Connections for the same IP protocol from the
                same source IP address to the same destination
                IP address will be served by the same backend VM
                while that VM remains healthy. This option
                cannot be used for HTTP(S) load balancing.
            GENERATED_COOKIE (370321204):
                Hash based on a cookie generated by the L7
                loadbalancer. Only valid for HTTP(S) load
                balancing.
            HEADER_FIELD (200737960):
                The hash is based on a user specified header
                field.
            HTTP_COOKIE (494981627):
                The hash is based on a user provided cookie.
            NONE (2402104):
                No session affinity. Connections from the
                same client IP may go to any instance in the
                pool.
        """
        UNDEFINED_SESSION_AFFINITY = 0
        CLIENT_IP = 345665051
        CLIENT_IP_NO_DESTINATION = 106122516
        CLIENT_IP_PORT_PROTO = 221722926
        CLIENT_IP_PROTO = 25322148
        GENERATED_COOKIE = 370321204
        HEADER_FIELD = 200737960
        HTTP_COOKIE = 494981627
        NONE = 2402104

    affinity_cookie_ttl_sec: int = proto.Field(
        proto.INT32,
        number=369996954,
        optional=True,
    )
    backends: MutableSequence["Backend"] = proto.RepeatedField(
        proto.MESSAGE,
        number=510839903,
        message="Backend",
    )
    cdn_policy: "BackendServiceCdnPolicy" = proto.Field(
        proto.MESSAGE,
        number=213976452,
        optional=True,
        message="BackendServiceCdnPolicy",
    )
    circuit_breakers: "CircuitBreakers" = proto.Field(
        proto.MESSAGE,
        number=421340061,
        optional=True,
        message="CircuitBreakers",
    )
    compression_mode: str = proto.Field(
        proto.STRING,
        number=95520988,
        optional=True,
    )
    connection_draining: "ConnectionDraining" = proto.Field(
        proto.MESSAGE,
        number=461096747,
        optional=True,
        message="ConnectionDraining",
    )
    connection_tracking_policy: "BackendServiceConnectionTrackingPolicy" = proto.Field(
        proto.MESSAGE,
        number=143994969,
        optional=True,
        message="BackendServiceConnectionTrackingPolicy",
    )
    consistent_hash: "ConsistentHashLoadBalancerSettings" = proto.Field(
        proto.MESSAGE,
        number=905883,
        optional=True,
        message="ConsistentHashLoadBalancerSettings",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    custom_request_headers: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=27977992,
    )
    custom_response_headers: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=387539094,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    edge_security_policy: str = proto.Field(
        proto.STRING,
        number=41036943,
        optional=True,
    )
    enable_c_d_n: bool = proto.Field(
        proto.BOOL,
        number=250733499,
        optional=True,
    )
    failover_policy: "BackendServiceFailoverPolicy" = proto.Field(
        proto.MESSAGE,
        number=105658655,
        optional=True,
        message="BackendServiceFailoverPolicy",
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    health_checks: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=448370606,
    )
    iap: "BackendServiceIAP" = proto.Field(
        proto.MESSAGE,
        number=104024,
        optional=True,
        message="BackendServiceIAP",
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    load_balancing_scheme: str = proto.Field(
        proto.STRING,
        number=363890244,
        optional=True,
    )
    locality_lb_policies: MutableSequence[
        "BackendServiceLocalityLoadBalancingPolicyConfig"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=140982557,
        message="BackendServiceLocalityLoadBalancingPolicyConfig",
    )
    locality_lb_policy: str = proto.Field(
        proto.STRING,
        number=131431487,
        optional=True,
    )
    log_config: "BackendServiceLogConfig" = proto.Field(
        proto.MESSAGE,
        number=351299741,
        optional=True,
        message="BackendServiceLogConfig",
    )
    max_stream_duration: "Duration" = proto.Field(
        proto.MESSAGE,
        number=61428376,
        optional=True,
        message="Duration",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    outlier_detection: "OutlierDetection" = proto.Field(
        proto.MESSAGE,
        number=354625086,
        optional=True,
        message="OutlierDetection",
    )
    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )
    port_name: str = proto.Field(
        proto.STRING,
        number=41534345,
        optional=True,
    )
    protocol: str = proto.Field(
        proto.STRING,
        number=84577944,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
        optional=True,
    )
    security_settings: "SecuritySettings" = proto.Field(
        proto.MESSAGE,
        number=478649922,
        optional=True,
        message="SecuritySettings",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    service_bindings: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=133581016,
    )
    session_affinity: str = proto.Field(
        proto.STRING,
        number=463888561,
        optional=True,
    )
    subsetting: "Subsetting" = proto.Field(
        proto.MESSAGE,
        number=450283536,
        optional=True,
        message="Subsetting",
    )
    timeout_sec: int = proto.Field(
        proto.INT32,
        number=79994995,
        optional=True,
    )


class BackendServiceAggregatedList(proto.Message):
    r"""Contains a list of BackendServicesScopedList.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.BackendServicesScopedList]):
            A list of BackendServicesScopedList
            resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "BackendServicesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="BackendServicesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class BackendServiceCdnPolicy(proto.Message):
    r"""Message containing Cloud CDN configuration for a backend
    service.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bypass_cache_on_request_headers (MutableSequence[google.cloud.compute_v1.types.BackendServiceCdnPolicyBypassCacheOnRequestHeader]):
            Bypass the cache when the specified request
            headers are matched - e.g. Pragma or
            Authorization headers. Up to 5 headers can be
            specified. The cache is bypassed for all
            cdnPolicy.cacheMode settings.
        cache_key_policy (google.cloud.compute_v1.types.CacheKeyPolicy):
            The CacheKeyPolicy for this CdnPolicy.

            This field is a member of `oneof`_ ``_cache_key_policy``.
        cache_mode (str):
            Specifies the cache setting for all responses from this
            backend. The possible values are: USE_ORIGIN_HEADERS
            Requires the origin to set valid caching headers to cache
            content. Responses without these headers will not be cached
            at Google's edge, and will require a full trip to the origin
            on every request, potentially impacting performance and
            increasing load on the origin server. FORCE_CACHE_ALL Cache
            all content, ignoring any "private", "no-store" or
            "no-cache" directives in Cache-Control response headers.
            Warning: this may result in Cloud CDN caching private,
            per-user (user identifiable) content. CACHE_ALL_STATIC
            Automatically cache static content, including common image
            formats, media (video and audio), and web assets (JavaScript
            and CSS). Requests and responses that are marked as
            uncacheable, as well as dynamic content (including HTML),
            will not be cached. Check the CacheMode enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_cache_mode``.
        client_ttl (int):
            Specifies a separate client (e.g. browser client) maximum
            TTL. This is used to clamp the max-age (or Expires) value
            sent to the client. With FORCE_CACHE_ALL, the lesser of
            client_ttl and default_ttl is used for the response max-age
            directive, along with a "public" directive. For cacheable
            content in CACHE_ALL_STATIC mode, client_ttl clamps the
            max-age from the origin (if specified), or else sets the
            response max-age directive to the lesser of the client_ttl
            and default_ttl, and also ensures a "public" cache-control
            directive is present. If a client TTL is not specified, a
            default value (1 hour) will be used. The maximum allowed
            value is 31,622,400s (1 year).

            This field is a member of `oneof`_ ``_client_ttl``.
        default_ttl (int):
            Specifies the default TTL for cached content served by this
            origin for responses that do not have an existing valid TTL
            (max-age or s-max-age). Setting a TTL of "0" means "always
            revalidate". The value of defaultTTL cannot be set to a
            value greater than that of maxTTL, but can be equal. When
            the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will
            overwrite the TTL set in all responses. The maximum allowed
            value is 31,622,400s (1 year), noting that infrequently
            accessed objects may be evicted from the cache before the
            defined TTL.

            This field is a member of `oneof`_ ``_default_ttl``.
        max_ttl (int):
            Specifies the maximum allowed TTL for cached
            content served by this origin. Cache directives
            that attempt to set a max-age or s-maxage higher
            than this, or an Expires header more than maxTTL
            seconds in the future will be capped at the
            value of maxTTL, as if it were the value of an
            s-maxage Cache-Control directive. Headers sent
            to the client will not be modified. Setting a
            TTL of "0" means "always revalidate". The
            maximum allowed value is 31,622,400s (1 year),
            noting that infrequently accessed objects may be
            evicted from the cache before the defined TTL.

            This field is a member of `oneof`_ ``_max_ttl``.
        negative_caching (bool):
            Negative caching allows per-status code TTLs to be set, in
            order to apply fine-grained caching for common errors or
            redirects. This can reduce the load on your origin and
            improve end-user experience by reducing response latency.
            When the cache mode is set to CACHE_ALL_STATIC or
            USE_ORIGIN_HEADERS, negative caching applies to responses
            with the specified response code that lack any
            Cache-Control, Expires, or Pragma: no-cache directives. When
            the cache mode is set to FORCE_CACHE_ALL, negative caching
            applies to all responses with the specified response code,
            and override any caching headers. By default, Cloud CDN will
            apply the following default TTLs to these status codes: HTTP
            300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m
            HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal
            Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected
            Request), 501 (Not Implemented): 60s. These defaults can be
            overridden in negative_caching_policy.

            This field is a member of `oneof`_ ``_negative_caching``.
        negative_caching_policy (MutableSequence[google.cloud.compute_v1.types.BackendServiceCdnPolicyNegativeCachingPolicy]):
            Sets a cache TTL for the specified HTTP status code.
            negative_caching must be enabled to configure
            negative_caching_policy. Omitting the policy and leaving
            negative_caching enabled will use Cloud CDN's default cache
            TTLs. Note that when specifying an explicit
            negative_caching_policy, you should take care to specify a
            cache TTL for all response codes that you wish to cache.
            Cloud CDN will not apply any default negative caching when a
            policy exists.
        request_coalescing (bool):
            If true then Cloud CDN will combine multiple
            concurrent cache fill requests into a small
            number of requests to the origin.

            This field is a member of `oneof`_ ``_request_coalescing``.
        serve_while_stale (int):
            Serve existing content from the cache (if
            available) when revalidating content with the
            origin, or when an error is encountered when
            refreshing the cache. This setting defines the
            default "max-stale" duration for any cached
            responses that do not specify a max-stale
            directive. Stale responses that exceed the TTL
            configured here will not be served. The default
            limit (max-stale) is 86400s (1 day), which will
            allow stale content to be served up to this
            limit beyond the max-age (or s-max-age) of a
            cached response. The maximum allowed value is
            604800 (1 week). Set this to zero (0) to disable
            serve-while-stale.

            This field is a member of `oneof`_ ``_serve_while_stale``.
        signed_url_cache_max_age_sec (int):
            Maximum number of seconds the response to a signed URL
            request will be considered fresh. After this time period,
            the response will be revalidated before being served.
            Defaults to 1hr (3600s). When serving responses to signed
            URL requests, Cloud CDN will internally behave as though all
            responses from this backend had a "Cache-Control: public,
            max-age=[TTL]" header, regardless of any existing
            Cache-Control header. The actual headers served in responses
            will not be altered.

            This field is a member of `oneof`_ ``_signed_url_cache_max_age_sec``.
        signed_url_key_names (MutableSequence[str]):
            [Output Only] Names of the keys for signing request URLs.
    """

    class CacheMode(proto.Enum):
        r"""Specifies the cache setting for all responses from this backend. The
        possible values are: USE_ORIGIN_HEADERS Requires the origin to set
        valid caching headers to cache content. Responses without these
        headers will not be cached at Google's edge, and will require a full
        trip to the origin on every request, potentially impacting
        performance and increasing load on the origin server.
        FORCE_CACHE_ALL Cache all content, ignoring any "private",
        "no-store" or "no-cache" directives in Cache-Control response
        headers. Warning: this may result in Cloud CDN caching private,
        per-user (user identifiable) content. CACHE_ALL_STATIC Automatically
        cache static content, including common image formats, media (video
        and audio), and web assets (JavaScript and CSS). Requests and
        responses that are marked as uncacheable, as well as dynamic content
        (including HTML), will not be cached.

        Values:
            UNDEFINED_CACHE_MODE (0):
                A value indicating that the enum field is not
                set.
            CACHE_ALL_STATIC (355027945):
                Automatically cache static content, including
                common image formats, media (video and audio),
                and web assets (JavaScript and CSS). Requests
                and responses that are marked as uncacheable, as
                well as dynamic content (including HTML), will
                not be cached.
            FORCE_CACHE_ALL (486026928):
                Cache all content, ignoring any "private",
                "no-store" or "no-cache" directives in
                Cache-Control response headers. Warning: this
                may result in Cloud CDN caching private,
                per-user (user identifiable) content.
            INVALID_CACHE_MODE (381295560):
                No description available.
            USE_ORIGIN_HEADERS (55380261):
                Requires the origin to set valid caching
                headers to cache content. Responses without
                these headers will not be cached at Google's
                edge, and will require a full trip to the origin
                on every request, potentially impacting
                performance and increasing load on the origin
                server.
        """
        UNDEFINED_CACHE_MODE = 0
        CACHE_ALL_STATIC = 355027945
        FORCE_CACHE_ALL = 486026928
        INVALID_CACHE_MODE = 381295560
        USE_ORIGIN_HEADERS = 55380261

    bypass_cache_on_request_headers: MutableSequence[
        "BackendServiceCdnPolicyBypassCacheOnRequestHeader"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=486203082,
        message="BackendServiceCdnPolicyBypassCacheOnRequestHeader",
    )
    cache_key_policy: "CacheKeyPolicy" = proto.Field(
        proto.MESSAGE,
        number=159263727,
        optional=True,
        message="CacheKeyPolicy",
    )
    cache_mode: str = proto.Field(
        proto.STRING,
        number=28877888,
        optional=True,
    )
    client_ttl: int = proto.Field(
        proto.INT32,
        number=29034360,
        optional=True,
    )
    default_ttl: int = proto.Field(
        proto.INT32,
        number=100253422,
        optional=True,
    )
    max_ttl: int = proto.Field(
        proto.INT32,
        number=307578001,
        optional=True,
    )
    negative_caching: bool = proto.Field(
        proto.BOOL,
        number=336110005,
        optional=True,
    )
    negative_caching_policy: MutableSequence[
        "BackendServiceCdnPolicyNegativeCachingPolicy"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=155359996,
        message="BackendServiceCdnPolicyNegativeCachingPolicy",
    )
    request_coalescing: bool = proto.Field(
        proto.BOOL,
        number=532808276,
        optional=True,
    )
    serve_while_stale: int = proto.Field(
        proto.INT32,
        number=236682203,
        optional=True,
    )
    signed_url_cache_max_age_sec: int = proto.Field(
        proto.INT64,
        number=269374534,
        optional=True,
    )
    signed_url_key_names: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=371848885,
    )


class BackendServiceCdnPolicyBypassCacheOnRequestHeader(proto.Message):
    r"""Bypass the cache when the specified request headers are present,
    e.g. Pragma or Authorization headers. Values are case insensitive.
    The presence of such a header overrides the cache_mode setting.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        header_name (str):
            The header field name to match on when
            bypassing cache. Values are case-insensitive.

            This field is a member of `oneof`_ ``_header_name``.
    """

    header_name: str = proto.Field(
        proto.STRING,
        number=110223613,
        optional=True,
    )


class BackendServiceCdnPolicyNegativeCachingPolicy(proto.Message):
    r"""Specify CDN TTLs for response error codes.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        code (int):
            The HTTP status code to define a TTL against.
            Only HTTP status codes 300, 301, 302, 307, 308,
            404, 405, 410, 421, 451 and 501 are can be
            specified as values, and you cannot specify a
            status code more than once.

            This field is a member of `oneof`_ ``_code``.
        ttl (int):
            The TTL (in seconds) for which to cache
            responses with the corresponding status code.
            The maximum allowed value is 1800s (30 minutes),
            noting that infrequently accessed objects may be
            evicted from the cache before the defined TTL.

            This field is a member of `oneof`_ ``_ttl``.
    """

    code: int = proto.Field(
        proto.INT32,
        number=3059181,
        optional=True,
    )
    ttl: int = proto.Field(
        proto.INT32,
        number=115180,
        optional=True,
    )


class BackendServiceConnectionTrackingPolicy(proto.Message):
    r"""Connection Tracking configuration for this BackendService.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        connection_persistence_on_unhealthy_backends (str):
            Specifies connection persistence when backends are
            unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set
            to DEFAULT_FOR_PROTOCOL, the existing connections persist on
            unhealthy backends only for connection-oriented protocols
            (TCP and SCTP) and only if the Tracking Mode is
            PER_CONNECTION (default tracking mode) or the Session
            Affinity is configured for 5-tuple. They do not persist for
            UDP. If set to NEVER_PERSIST, after a backend becomes
            unhealthy, the existing connections on the unhealthy backend
            are never persisted on the unhealthy backend. They are
            always diverted to newly selected healthy backends (unless
            all backends are unhealthy). If set to ALWAYS_PERSIST,
            existing connections always persist on unhealthy backends
            regardless of protocol and session affinity. It is generally
            not recommended to use this mode overriding the default. For
            more details, see `Connection Persistence for Network Load
            Balancing <https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence>`__
            and `Connection Persistence for Internal TCP/UDP Load
            Balancing <https://cloud.google.com/load-balancing/docs/internal#connection-persistence>`__.
            Check the ConnectionPersistenceOnUnhealthyBackends enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_connection_persistence_on_unhealthy_backends``.
        enable_strong_affinity (bool):
            Enable Strong Session Affinity for Network
            Load Balancing. This option is not available
            publicly.

            This field is a member of `oneof`_ ``_enable_strong_affinity``.
        idle_timeout_sec (int):
            Specifies how long to keep a Connection Tracking entry while
            there is no matching traffic (in seconds). For Internal
            TCP/UDP Load Balancing: - The minimum (default) is 10
            minutes and the maximum is 16 hours. - It can be set only if
            Connection Tracking is less than 5-tuple (i.e. Session
            Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or
            CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For
            Network Load Balancer the default is 60 seconds. This option
            is not available publicly.

            This field is a member of `oneof`_ ``_idle_timeout_sec``.
        tracking_mode (str):
            Specifies the key used for connection tracking. There are
            two options: - PER_CONNECTION: This is the default mode. The
            Connection Tracking is performed as per the Connection Key
            (default Hash Method) for the specific protocol. -
            PER_SESSION: The Connection Tracking is performed as per the
            configured Session Affinity. It matches the configured
            Session Affinity. For more details, see `Tracking Mode for
            Network Load
            Balancing <https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode>`__
            and `Tracking Mode for Internal TCP/UDP Load
            Balancing <https://cloud.google.com/load-balancing/docs/internal#tracking-mode>`__.
            Check the TrackingMode enum for the list of possible values.

            This field is a member of `oneof`_ ``_tracking_mode``.
    """

    class ConnectionPersistenceOnUnhealthyBackends(proto.Enum):
        r"""Specifies connection persistence when backends are unhealthy. The
        default value is DEFAULT_FOR_PROTOCOL. If set to
        DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy
        backends only for connection-oriented protocols (TCP and SCTP) and
        only if the Tracking Mode is PER_CONNECTION (default tracking mode)
        or the Session Affinity is configured for 5-tuple. They do not
        persist for UDP. If set to NEVER_PERSIST, after a backend becomes
        unhealthy, the existing connections on the unhealthy backend are
        never persisted on the unhealthy backend. They are always diverted
        to newly selected healthy backends (unless all backends are
        unhealthy). If set to ALWAYS_PERSIST, existing connections always
        persist on unhealthy backends regardless of protocol and session
        affinity. It is generally not recommended to use this mode
        overriding the default. For more details, see `Connection
        Persistence for Network Load
        Balancing <https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence>`__
        and `Connection Persistence for Internal TCP/UDP Load
        Balancing <https://cloud.google.com/load-balancing/docs/internal#connection-persistence>`__.

        Values:
            UNDEFINED_CONNECTION_PERSISTENCE_ON_UNHEALTHY_BACKENDS (0):
                A value indicating that the enum field is not
                set.
            ALWAYS_PERSIST (38400900):
                No description available.
            DEFAULT_FOR_PROTOCOL (145265356):
                No description available.
            NEVER_PERSIST (138646241):
                No description available.
        """
        UNDEFINED_CONNECTION_PERSISTENCE_ON_UNHEALTHY_BACKENDS = 0
        ALWAYS_PERSIST = 38400900
        DEFAULT_FOR_PROTOCOL = 145265356
        NEVER_PERSIST = 138646241

    class TrackingMode(proto.Enum):
        r"""Specifies the key used for connection tracking. There are two
        options: - PER_CONNECTION: This is the default mode. The Connection
        Tracking is performed as per the Connection Key (default Hash
        Method) for the specific protocol. - PER_SESSION: The Connection
        Tracking is performed as per the configured Session Affinity. It
        matches the configured Session Affinity. For more details, see
        `Tracking Mode for Network Load
        Balancing <https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode>`__
        and `Tracking Mode for Internal TCP/UDP Load
        Balancing <https://cloud.google.com/load-balancing/docs/internal#tracking-mode>`__.

        Values:
            UNDEFINED_TRACKING_MODE (0):
                A value indicating that the enum field is not
                set.
            INVALID_TRACKING_MODE (49234371):
                No description available.
            PER_CONNECTION (85162848):
                No description available.
            PER_SESSION (182099252):
                No description available.
        """
        UNDEFINED_TRACKING_MODE = 0
        INVALID_TRACKING_MODE = 49234371
        PER_CONNECTION = 85162848
        PER_SESSION = 182099252

    connection_persistence_on_unhealthy_backends: str = proto.Field(
        proto.STRING,
        number=152439033,
        optional=True,
    )
    enable_strong_affinity: bool = proto.Field(
        proto.BOOL,
        number=24539924,
        optional=True,
    )
    idle_timeout_sec: int = proto.Field(
        proto.INT32,
        number=24977544,
        optional=True,
    )
    tracking_mode: str = proto.Field(
        proto.STRING,
        number=127757867,
        optional=True,
    )


class BackendServiceFailoverPolicy(proto.Message):
    r"""For load balancers that have configurable failover: `Internal
    TCP/UDP Load
    Balancing <https://cloud.google.com/load-balancing/docs/internal/failover-overview>`__
    and `external TCP/UDP Load
    Balancing <https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview>`__.
    On failover or failback, this field indicates whether connection
    draining will be honored. Google Cloud has a fixed connection
    draining timeout of 10 minutes. A setting of true terminates
    existing TCP connections to the active pool during failover and
    failback, immediately draining traffic. A setting of false allows
    existing TCP connections to persist, even on VMs no longer in the
    active pool, for up to the duration of the connection draining
    timeout (10 minutes).


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disable_connection_drain_on_failover (bool):
            This can be set to true only if the protocol
            is TCP. The default is false.

            This field is a member of `oneof`_ ``_disable_connection_drain_on_failover``.
        drop_traffic_if_unhealthy (bool):
            If set to true, connections to the load balancer are dropped
            when all primary and all backup backend VMs are unhealthy.If
            set to false, connections are distributed among all primary
            VMs when all primary and all backup backend VMs are
            unhealthy. For load balancers that have configurable
            failover: `Internal TCP/UDP Load
            Balancing <https://cloud.google.com/load-balancing/docs/internal/failover-overview>`__
            and `external TCP/UDP Load
            Balancing <https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview>`__.
            The default is false.

            This field is a member of `oneof`_ ``_drop_traffic_if_unhealthy``.
        failover_ratio (float):
            The value of the field must be in the range [0, 1]. If the
            value is 0, the load balancer performs a failover when the
            number of healthy primary VMs equals zero. For all other
            values, the load balancer performs a failover when the total
            number of healthy primary VMs is less than this ratio. For
            load balancers that have configurable failover: `Internal
            TCP/UDP Load
            Balancing <https://cloud.google.com/load-balancing/docs/internal/failover-overview>`__
            and `external TCP/UDP Load
            Balancing <https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview>`__.

            This field is a member of `oneof`_ ``_failover_ratio``.
    """

    disable_connection_drain_on_failover: bool = proto.Field(
        proto.BOOL,
        number=182150753,
        optional=True,
    )
    drop_traffic_if_unhealthy: bool = proto.Field(
        proto.BOOL,
        number=112289428,
        optional=True,
    )
    failover_ratio: float = proto.Field(
        proto.FLOAT,
        number=212667006,
        optional=True,
    )


class BackendServiceGroupHealth(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        annotations (MutableMapping[str, str]):
            Metadata defined as annotations on the
            network endpoint group.
        health_status (MutableSequence[google.cloud.compute_v1.types.HealthStatus]):
            Health state of the backend instances or
            endpoints in requested instance or network
            endpoint group, determined based on configured
            health checks.
        kind (str):
            [Output Only] Type of resource. Always
            compute#backendServiceGroupHealth for the health of backend
            services.

            This field is a member of `oneof`_ ``_kind``.
    """

    annotations: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=112032548,
    )
    health_status: MutableSequence["HealthStatus"] = proto.RepeatedField(
        proto.MESSAGE,
        number=380545845,
        message="HealthStatus",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )


class BackendServiceIAP(proto.Message):
    r"""Identity-Aware Proxy

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enabled (bool):
            Whether the serving infrastructure will
            authenticate and authorize all incoming
            requests. If true, the oauth2ClientId and
            oauth2ClientSecret fields must be non-empty.

            This field is a member of `oneof`_ ``_enabled``.
        oauth2_client_id (str):
            OAuth2 client ID to use for the
            authentication flow.

            This field is a member of `oneof`_ ``_oauth2_client_id``.
        oauth2_client_secret (str):
            OAuth2 client secret to use for the
            authentication flow. For security reasons, this
            value cannot be retrieved via the API. Instead,
            the SHA-256 hash of the value is returned in the
            oauth2ClientSecretSha256 field. @InputOnly

            This field is a member of `oneof`_ ``_oauth2_client_secret``.
        oauth2_client_secret_sha256 (str):
            [Output Only] SHA256 hash value for the field
            oauth2_client_secret above.

            This field is a member of `oneof`_ ``_oauth2_client_secret_sha256``.
    """

    enabled: bool = proto.Field(
        proto.BOOL,
        number=1018689,
        optional=True,
    )
    oauth2_client_id: str = proto.Field(
        proto.STRING,
        number=314017611,
        optional=True,
    )
    oauth2_client_secret: str = proto.Field(
        proto.STRING,
        number=50999520,
        optional=True,
    )
    oauth2_client_secret_sha256: str = proto.Field(
        proto.STRING,
        number=112903782,
        optional=True,
    )


class BackendServiceList(proto.Message):
    r"""Contains a list of BackendService resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.BackendService]):
            A list of BackendService resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#backendServiceList for lists of backend services.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["BackendService"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="BackendService",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class BackendServiceLocalityLoadBalancingPolicyConfig(proto.Message):
    r"""Container for either a built-in LB policy supported by gRPC
    or Envoy or a custom one implemented by the end user.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        custom_policy (google.cloud.compute_v1.types.BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy):

            This field is a member of `oneof`_ ``_custom_policy``.
        policy (google.cloud.compute_v1.types.BackendServiceLocalityLoadBalancingPolicyConfigPolicy):

            This field is a member of `oneof`_ ``_policy``.
    """

    custom_policy: "BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy" = (
        proto.Field(
            proto.MESSAGE,
            number=4818368,
            optional=True,
            message="BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy",
        )
    )
    policy: "BackendServiceLocalityLoadBalancingPolicyConfigPolicy" = proto.Field(
        proto.MESSAGE,
        number=91071794,
        optional=True,
        message="BackendServiceLocalityLoadBalancingPolicyConfigPolicy",
    )


class BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy(proto.Message):
    r"""The configuration for a custom policy implemented by the user
    and deployed with the client.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        data (str):
            An optional, arbitrary JSON object with
            configuration data, understood by a locally
            installed custom policy implementation.

            This field is a member of `oneof`_ ``_data``.
        name (str):
            Identifies the custom policy. The value
            should match the name of a custom implementation
            registered on the gRPC clients. It should follow
            protocol buffer message naming conventions and
            include the full path (for example,
            myorg.CustomLbPolicy). The maximum length is 256
            characters. Do not specify the same custom
            policy more than once for a backend. If you do,
            the configuration is rejected. For an example of
            how to use this field, see Use a custom policy.

            This field is a member of `oneof`_ ``_name``.
    """

    data: str = proto.Field(
        proto.STRING,
        number=3076010,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )


class BackendServiceLocalityLoadBalancingPolicyConfigPolicy(proto.Message):
    r"""The configuration for a built-in load balancing policy.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            The name of a locality load-balancing policy. Valid values
            include ROUND_ROBIN and, for Java clients, LEAST_REQUEST.
            For information about these values, see the description of
            localityLbPolicy. Do not specify the same policy more than
            once for a backend. If you do, the configuration is
            rejected. Check the Name enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_name``.
    """

    class Name(proto.Enum):
        r"""The name of a locality load-balancing policy. Valid values include
        ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information
        about these values, see the description of localityLbPolicy. Do not
        specify the same policy more than once for a backend. If you do, the
        configuration is rejected.

        Values:
            UNDEFINED_NAME (0):
                A value indicating that the enum field is not
                set.
            INVALID_LB_POLICY (323318707):
                No description available.
            LEAST_REQUEST (46604921):
                An O(1) algorithm which selects two random
                healthy hosts and picks the host which has fewer
                active requests.
            MAGLEV (119180266):
                This algorithm implements consistent hashing
                to backends. Maglev can be used as a drop in
                replacement for the ring hash load balancer.
                Maglev is not as stable as ring hash but has
                faster table lookup build times and host
                selection times. For more information about
                Maglev, see
                https://ai.google/research/pubs/pub44824
            ORIGINAL_DESTINATION (166297216):
                Backend host is selected based on the client
                connection metadata, i.e., connections are
                opened to the same address as the destination
                address of the incoming connection before the
                connection was redirected to the load balancer.
            RANDOM (262527171):
                The load balancer selects a random healthy
                host.
            RING_HASH (432795069):
                The ring/modulo hash load balancer implements
                consistent hashing to backends. The algorithm
                has the property that the addition/removal of a
                host from a set of N hosts only affects 1/N of
                the requests.
            ROUND_ROBIN (153895801):
                This is a simple policy in which each healthy
                backend is selected in round robin order. This
                is the default.
            WEIGHTED_MAGLEV (254930962):
                Per-instance weighted Load Balancing via health check
                reported weights. If set, the Backend Service must configure
                a non legacy HTTP-based Health Check, and health check
                replies are expected to contain non-standard HTTP response
                header field X-Load-Balancing-Endpoint-Weight to specify the
                per-instance weights. If set, Load Balancing is weighted
                based on the per-instance weights reported in the last
                processed health check replies, as long as every instance
                either reported a valid weight or had UNAVAILABLE_WEIGHT.
                Otherwise, Load Balancing remains equal-weight. This option
                is only supported in Network Load Balancing.
        """
        UNDEFINED_NAME = 0
        INVALID_LB_POLICY = 323318707
        LEAST_REQUEST = 46604921
        MAGLEV = 119180266
        ORIGINAL_DESTINATION = 166297216
        RANDOM = 262527171
        RING_HASH = 432795069
        ROUND_ROBIN = 153895801
        WEIGHTED_MAGLEV = 254930962

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )


class BackendServiceLogConfig(proto.Message):
    r"""The available logging options for the load balancer traffic
    served by this backend service.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enable (bool):
            Denotes whether to enable logging for the
            load balancer traffic served by this backend
            service. The default value is false.

            This field is a member of `oneof`_ ``_enable``.
        optional_fields (MutableSequence[str]):
            This field can only be specified if logging
            is enabled for this backend service and
            "logConfig.optionalMode" was set to CUSTOM.
            Contains a list of optional fields you want to
            include in the logs. For example:
            serverInstance, serverGkeDetails.cluster,
            serverGkeDetails.pod.podNamespace
        optional_mode (str):
            This field can only be specified if logging is enabled for
            this backend service. Configures whether all, none or a
            subset of optional fields should be added to the reported
            logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL,
            CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL. Check the
            OptionalMode enum for the list of possible values.

            This field is a member of `oneof`_ ``_optional_mode``.
        sample_rate (float):
            This field can only be specified if logging is enabled for
            this backend service. The value of the field must be in [0,
            1]. This configures the sampling rate of requests to the
            load balancer where 1.0 means all logged requests are
            reported and 0.0 means no logged requests are reported. The
            default value is 1.0.

            This field is a member of `oneof`_ ``_sample_rate``.
    """

    class OptionalMode(proto.Enum):
        r"""This field can only be specified if logging is enabled for this
        backend service. Configures whether all, none or a subset of
        optional fields should be added to the reported logs. One of
        [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is
        EXCLUDE_ALL_OPTIONAL.

        Values:
            UNDEFINED_OPTIONAL_MODE (0):
                A value indicating that the enum field is not
                set.
            CUSTOM (388595569):
                A subset of optional fields.
            EXCLUDE_ALL_OPTIONAL (168636099):
                None optional fields.
            INCLUDE_ALL_OPTIONAL (535606965):
                All optional fields.
        """
        UNDEFINED_OPTIONAL_MODE = 0
        CUSTOM = 388595569
        EXCLUDE_ALL_OPTIONAL = 168636099
        INCLUDE_ALL_OPTIONAL = 535606965

    enable: bool = proto.Field(
        proto.BOOL,
        number=311764355,
        optional=True,
    )
    optional_fields: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=528589944,
    )
    optional_mode: str = proto.Field(
        proto.STRING,
        number=128697122,
        optional=True,
    )
    sample_rate: float = proto.Field(
        proto.FLOAT,
        number=153193045,
        optional=True,
    )


class BackendServiceReference(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):

            This field is a member of `oneof`_ ``_backend_service``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
        optional=True,
    )


class BackendServicesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_services (MutableSequence[google.cloud.compute_v1.types.BackendService]):
            A list of BackendServices contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of backend services when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    backend_services: MutableSequence["BackendService"] = proto.RepeatedField(
        proto.MESSAGE,
        number=388522409,
        message="BackendService",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class BfdPacket(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        authentication_present (bool):
            The Authentication Present bit of the BFD
            packet. This is specified in section 4.1 of
            RFC5880

            This field is a member of `oneof`_ ``_authentication_present``.
        control_plane_independent (bool):
            The Control Plane Independent bit of the BFD
            packet. This is specified in section 4.1 of
            RFC5880

            This field is a member of `oneof`_ ``_control_plane_independent``.
        demand (bool):
            The demand bit of the BFD packet. This is
            specified in section 4.1 of RFC5880

            This field is a member of `oneof`_ ``_demand``.
        diagnostic (str):
            The diagnostic code specifies the local
            system's reason for the last change in session
            state. This allows remote systems to determine
            the reason that the previous session failed, for
            example. These diagnostic codes are specified in
            section 4.1 of RFC5880 Check the Diagnostic enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_diagnostic``.
        final (bool):
            The Final bit of the BFD packet. This is
            specified in section 4.1 of RFC5880

            This field is a member of `oneof`_ ``_final``.
        length (int):
            The length of the BFD Control packet in
            bytes. This is specified in section 4.1 of
            RFC5880

            This field is a member of `oneof`_ ``_length``.
        min_echo_rx_interval_ms (int):
            The Required Min Echo RX Interval value in
            the BFD packet. This is specified in section 4.1
            of RFC5880

            This field is a member of `oneof`_ ``_min_echo_rx_interval_ms``.
        min_rx_interval_ms (int):
            The Required Min RX Interval value in the BFD
            packet. This is specified in section 4.1 of
            RFC5880

            This field is a member of `oneof`_ ``_min_rx_interval_ms``.
        min_tx_interval_ms (int):
            The Desired Min TX Interval value in the BFD
            packet. This is specified in section 4.1 of
            RFC5880

            This field is a member of `oneof`_ ``_min_tx_interval_ms``.
        multiplier (int):
            The detection time multiplier of the BFD
            packet. This is specified in section 4.1 of
            RFC5880

            This field is a member of `oneof`_ ``_multiplier``.
        multipoint (bool):
            The multipoint bit of the BFD packet. This is
            specified in section 4.1 of RFC5880

            This field is a member of `oneof`_ ``_multipoint``.
        my_discriminator (int):
            The My Discriminator value in the BFD packet.
            This is specified in section 4.1 of RFC5880

            This field is a member of `oneof`_ ``_my_discriminator``.
        poll (bool):
            The Poll bit of the BFD packet. This is
            specified in section 4.1 of RFC5880

            This field is a member of `oneof`_ ``_poll``.
        state (str):
            The current BFD session state as seen by the
            transmitting system. These states are specified
            in section 4.1 of RFC5880 Check the State enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_state``.
        version (int):
            The version number of the BFD protocol, as
            specified in section 4.1 of RFC5880.

            This field is a member of `oneof`_ ``_version``.
        your_discriminator (int):
            The Your Discriminator value in the BFD
            packet. This is specified in section 4.1 of
            RFC5880

            This field is a member of `oneof`_ ``_your_discriminator``.
    """

    class Diagnostic(proto.Enum):
        r"""The diagnostic code specifies the local system's reason for
        the last change in session state. This allows remote systems to
        determine the reason that the previous session failed, for
        example. These diagnostic codes are specified in section 4.1 of
        RFC5880

        Values:
            UNDEFINED_DIAGNOSTIC (0):
                A value indicating that the enum field is not
                set.
            ADMINISTRATIVELY_DOWN (121685798):
                No description available.
            CONCATENATED_PATH_DOWN (26186892):
                No description available.
            CONTROL_DETECTION_TIME_EXPIRED (135478383):
                No description available.
            DIAGNOSTIC_UNSPECIFIED (58720895):
                No description available.
            ECHO_FUNCTION_FAILED (220687466):
                No description available.
            FORWARDING_PLANE_RESET (19715882):
                No description available.
            NEIGHBOR_SIGNALED_SESSION_DOWN (374226742):
                No description available.
            NO_DIAGNOSTIC (222503141):
                No description available.
            PATH_DOWN (290605180):
                No description available.
            REVERSE_CONCATENATED_PATH_DOWN (479337129):
                No description available.
        """
        UNDEFINED_DIAGNOSTIC = 0
        ADMINISTRATIVELY_DOWN = 121685798
        CONCATENATED_PATH_DOWN = 26186892
        CONTROL_DETECTION_TIME_EXPIRED = 135478383
        DIAGNOSTIC_UNSPECIFIED = 58720895
        ECHO_FUNCTION_FAILED = 220687466
        FORWARDING_PLANE_RESET = 19715882
        NEIGHBOR_SIGNALED_SESSION_DOWN = 374226742
        NO_DIAGNOSTIC = 222503141
        PATH_DOWN = 290605180
        REVERSE_CONCATENATED_PATH_DOWN = 479337129

    class State(proto.Enum):
        r"""The current BFD session state as seen by the transmitting
        system. These states are specified in section 4.1 of RFC5880

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            ADMIN_DOWN (128544690):
                No description available.
            DOWN (2104482):
                No description available.
            INIT (2252048):
                No description available.
            STATE_UNSPECIFIED (470755401):
                No description available.
            UP (2715):
                No description available.
        """
        UNDEFINED_STATE = 0
        ADMIN_DOWN = 128544690
        DOWN = 2104482
        INIT = 2252048
        STATE_UNSPECIFIED = 470755401
        UP = 2715

    authentication_present: bool = proto.Field(
        proto.BOOL,
        number=105974260,
        optional=True,
    )
    control_plane_independent: bool = proto.Field(
        proto.BOOL,
        number=62363573,
        optional=True,
    )
    demand: bool = proto.Field(
        proto.BOOL,
        number=275180107,
        optional=True,
    )
    diagnostic: str = proto.Field(
        proto.STRING,
        number=62708647,
        optional=True,
    )
    final: bool = proto.Field(
        proto.BOOL,
        number=97436022,
        optional=True,
    )
    length: int = proto.Field(
        proto.UINT32,
        number=504249062,
        optional=True,
    )
    min_echo_rx_interval_ms: int = proto.Field(
        proto.UINT32,
        number=97286868,
        optional=True,
    )
    min_rx_interval_ms: int = proto.Field(
        proto.UINT32,
        number=463399028,
        optional=True,
    )
    min_tx_interval_ms: int = proto.Field(
        proto.UINT32,
        number=526023602,
        optional=True,
    )
    multiplier: int = proto.Field(
        proto.UINT32,
        number=191331777,
        optional=True,
    )
    multipoint: bool = proto.Field(
        proto.BOOL,
        number=191421431,
        optional=True,
    )
    my_discriminator: int = proto.Field(
        proto.UINT32,
        number=76663113,
        optional=True,
    )
    poll: bool = proto.Field(
        proto.BOOL,
        number=3446719,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )
    version: int = proto.Field(
        proto.UINT32,
        number=351608024,
        optional=True,
    )
    your_discriminator: int = proto.Field(
        proto.UINT32,
        number=515634064,
        optional=True,
    )


class BfdStatus(proto.Message):
    r"""Next free: 15

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bfd_session_initialization_mode (str):
            The BFD session initialization mode for this
            BGP peer. If set to ACTIVE, the Cloud Router
            will initiate the BFD session for this BGP peer.
            If set to PASSIVE, the Cloud Router will wait
            for the peer router to initiate the BFD session
            for this BGP peer. If set to DISABLED, BFD is
            disabled for this BGP peer. Check the
            BfdSessionInitializationMode enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_bfd_session_initialization_mode``.
        config_update_timestamp_micros (int):
            Unix timestamp of the most recent config
            update.

            This field is a member of `oneof`_ ``_config_update_timestamp_micros``.
        control_packet_counts (google.cloud.compute_v1.types.BfdStatusPacketCounts):
            Control packet counts for the current BFD
            session.

            This field is a member of `oneof`_ ``_control_packet_counts``.
        control_packet_intervals (MutableSequence[google.cloud.compute_v1.types.PacketIntervals]):
            Inter-packet time interval statistics for
            control packets.
        local_diagnostic (str):
            The diagnostic code specifies the local
            system's reason for the last change in session
            state. This allows remote systems to determine
            the reason that the previous session failed, for
            example. These diagnostic codes are specified in
            section 4.1 of RFC5880 Check the LocalDiagnostic
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_local_diagnostic``.
        local_state (str):
            The current BFD session state as seen by the
            transmitting system. These states are specified
            in section 4.1 of RFC5880 Check the LocalState
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_local_state``.
        negotiated_local_control_tx_interval_ms (int):
            Negotiated transmit interval for control
            packets.

            This field is a member of `oneof`_ ``_negotiated_local_control_tx_interval_ms``.
        rx_packet (google.cloud.compute_v1.types.BfdPacket):
            The most recent Rx control packet for this
            BFD session.

            This field is a member of `oneof`_ ``_rx_packet``.
        tx_packet (google.cloud.compute_v1.types.BfdPacket):
            The most recent Tx control packet for this
            BFD session.

            This field is a member of `oneof`_ ``_tx_packet``.
        uptime_ms (int):
            Session uptime in milliseconds. Value will be
            0 if session is not up.

            This field is a member of `oneof`_ ``_uptime_ms``.
    """

    class BfdSessionInitializationMode(proto.Enum):
        r"""The BFD session initialization mode for this BGP peer. If set
        to ACTIVE, the Cloud Router will initiate the BFD session for
        this BGP peer. If set to PASSIVE, the Cloud Router will wait for
        the peer router to initiate the BFD session for this BGP peer.
        If set to DISABLED, BFD is disabled for this BGP peer.

        Values:
            UNDEFINED_BFD_SESSION_INITIALIZATION_MODE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                No description available.
            DISABLED (516696700):
                No description available.
            PASSIVE (462813959):
                No description available.
        """
        UNDEFINED_BFD_SESSION_INITIALIZATION_MODE = 0
        ACTIVE = 314733318
        DISABLED = 516696700
        PASSIVE = 462813959

    class LocalDiagnostic(proto.Enum):
        r"""The diagnostic code specifies the local system's reason for
        the last change in session state. This allows remote systems to
        determine the reason that the previous session failed, for
        example. These diagnostic codes are specified in section 4.1 of
        RFC5880

        Values:
            UNDEFINED_LOCAL_DIAGNOSTIC (0):
                A value indicating that the enum field is not
                set.
            ADMINISTRATIVELY_DOWN (121685798):
                No description available.
            CONCATENATED_PATH_DOWN (26186892):
                No description available.
            CONTROL_DETECTION_TIME_EXPIRED (135478383):
                No description available.
            DIAGNOSTIC_UNSPECIFIED (58720895):
                No description available.
            ECHO_FUNCTION_FAILED (220687466):
                No description available.
            FORWARDING_PLANE_RESET (19715882):
                No description available.
            NEIGHBOR_SIGNALED_SESSION_DOWN (374226742):
                No description available.
            NO_DIAGNOSTIC (222503141):
                No description available.
            PATH_DOWN (290605180):
                No description available.
            REVERSE_CONCATENATED_PATH_DOWN (479337129):
                No description available.
        """
        UNDEFINED_LOCAL_DIAGNOSTIC = 0
        ADMINISTRATIVELY_DOWN = 121685798
        CONCATENATED_PATH_DOWN = 26186892
        CONTROL_DETECTION_TIME_EXPIRED = 135478383
        DIAGNOSTIC_UNSPECIFIED = 58720895
        ECHO_FUNCTION_FAILED = 220687466
        FORWARDING_PLANE_RESET = 19715882
        NEIGHBOR_SIGNALED_SESSION_DOWN = 374226742
        NO_DIAGNOSTIC = 222503141
        PATH_DOWN = 290605180
        REVERSE_CONCATENATED_PATH_DOWN = 479337129

    class LocalState(proto.Enum):
        r"""The current BFD session state as seen by the transmitting
        system. These states are specified in section 4.1 of RFC5880

        Values:
            UNDEFINED_LOCAL_STATE (0):
                A value indicating that the enum field is not
                set.
            ADMIN_DOWN (128544690):
                No description available.
            DOWN (2104482):
                No description available.
            INIT (2252048):
                No description available.
            STATE_UNSPECIFIED (470755401):
                No description available.
            UP (2715):
                No description available.
        """
        UNDEFINED_LOCAL_STATE = 0
        ADMIN_DOWN = 128544690
        DOWN = 2104482
        INIT = 2252048
        STATE_UNSPECIFIED = 470755401
        UP = 2715

    bfd_session_initialization_mode: str = proto.Field(
        proto.STRING,
        number=218156954,
        optional=True,
    )
    config_update_timestamp_micros: int = proto.Field(
        proto.INT64,
        number=457195569,
        optional=True,
    )
    control_packet_counts: "BfdStatusPacketCounts" = proto.Field(
        proto.MESSAGE,
        number=132573561,
        optional=True,
        message="BfdStatusPacketCounts",
    )
    control_packet_intervals: MutableSequence["PacketIntervals"] = proto.RepeatedField(
        proto.MESSAGE,
        number=500806649,
        message="PacketIntervals",
    )
    local_diagnostic: str = proto.Field(
        proto.STRING,
        number=463737083,
        optional=True,
    )
    local_state: str = proto.Field(
        proto.STRING,
        number=149195453,
        optional=True,
    )
    negotiated_local_control_tx_interval_ms: int = proto.Field(
        proto.UINT32,
        number=21768340,
        optional=True,
    )
    rx_packet: "BfdPacket" = proto.Field(
        proto.MESSAGE,
        number=505069729,
        optional=True,
        message="BfdPacket",
    )
    tx_packet: "BfdPacket" = proto.Field(
        proto.MESSAGE,
        number=111386275,
        optional=True,
        message="BfdPacket",
    )
    uptime_ms: int = proto.Field(
        proto.INT64,
        number=125398365,
        optional=True,
    )


class BfdStatusPacketCounts(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        num_rx (int):
            Number of packets received since the
            beginning of the current BFD session.

            This field is a member of `oneof`_ ``_num_rx``.
        num_rx_rejected (int):
            Number of packets received that were rejected
            because of errors since the beginning of the
            current BFD session.

            This field is a member of `oneof`_ ``_num_rx_rejected``.
        num_rx_successful (int):
            Number of packets received that were
            successfully processed since the beginning of
            the current BFD session.

            This field is a member of `oneof`_ ``_num_rx_successful``.
        num_tx (int):
            Number of packets transmitted since the
            beginning of the current BFD session.

            This field is a member of `oneof`_ ``_num_tx``.
    """

    num_rx: int = proto.Field(
        proto.UINT32,
        number=39375263,
        optional=True,
    )
    num_rx_rejected: int = proto.Field(
        proto.UINT32,
        number=281007902,
        optional=True,
    )
    num_rx_successful: int = proto.Field(
        proto.UINT32,
        number=455361850,
        optional=True,
    )
    num_tx: int = proto.Field(
        proto.UINT32,
        number=39375325,
        optional=True,
    )


class Binding(proto.Message):
    r"""Associates ``members``, or principals, with a ``role``.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        binding_id (str):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_binding_id``.
        condition (google.cloud.compute_v1.types.Expr):
            The condition that is associated with this binding. If the
            condition evaluates to ``true``, then this binding applies
            to the current request. If the condition evaluates to
            ``false``, then this binding does not apply to the current
            request. However, a different role binding might grant the
            same role to one or more of the principals in this binding.
            To learn which resources support conditions in their IAM
            policies, see the `IAM
            documentation <https://cloud.google.com/iam/help/conditions/resource-policies>`__.

            This field is a member of `oneof`_ ``_condition``.
        members (MutableSequence[str]):
            Specifies the principals requesting access for a Google
            Cloud resource. ``members`` can have the following values:
            \* ``allUsers``: A special identifier that represents anyone
            who is on the internet; with or without a Google account. \*
            ``allAuthenticatedUsers``: A special identifier that
            represents anyone who is authenticated with a Google account
            or a service account. Does not include identities that come
            from external identity providers (IdPs) through identity
            federation. \* ``user:{emailid}``: An email address that
            represents a specific Google account. For example,
            ``alice@example.com`` . \* ``serviceAccount:{emailid}``: An
            email address that represents a Google service account. For
            example, ``my-other-app@appspot.gserviceaccount.com``. \*
            ``serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]``:
            An identifier for a `Kubernetes service
            account <https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts>`__.
            For example,
            ``my-project.svc.id.goog[my-namespace/my-kubernetes-sa]``.
            \* ``group:{emailid}``: An email address that represents a
            Google group. For example, ``admins@example.com``. \*
            ``domain:{domain}``: The G Suite domain (primary) that
            represents all the users of that domain. For example,
            ``google.com`` or ``example.com``. \*
            ``deleted:user:{emailid}?uid={uniqueid}``: An email address
            (plus unique identifier) representing a user that has been
            recently deleted. For example,
            ``alice@example.com?uid=123456789012345678901``. If the user
            is recovered, this value reverts to ``user:{emailid}`` and
            the recovered user retains the role in the binding. \*
            ``deleted:serviceAccount:{emailid}?uid={uniqueid}``: An
            email address (plus unique identifier) representing a
            service account that has been recently deleted. For example,
            ``my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901``.
            If the service account is undeleted, this value reverts to
            ``serviceAccount:{emailid}`` and the undeleted service
            account retains the role in the binding. \*
            ``deleted:group:{emailid}?uid={uniqueid}``: An email address
            (plus unique identifier) representing a Google group that
            has been recently deleted. For example,
            ``admins@example.com?uid=123456789012345678901``. If the
            group is recovered, this value reverts to
            ``group:{emailid}`` and the recovered group retains the role
            in the binding.
        role (str):
            Role that is assigned to the list of ``members``, or
            principals. For example, ``roles/viewer``, ``roles/editor``,
            or ``roles/owner``.

            This field is a member of `oneof`_ ``_role``.
    """

    binding_id: str = proto.Field(
        proto.STRING,
        number=441088277,
        optional=True,
    )
    condition: "Expr" = proto.Field(
        proto.MESSAGE,
        number=212430107,
        optional=True,
        message="Expr",
    )
    members: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=412010777,
    )
    role: str = proto.Field(
        proto.STRING,
        number=3506294,
        optional=True,
    )


class BulkInsertInstanceRequest(proto.Message):
    r"""A request message for Instances.BulkInsert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bulk_insert_instance_resource_resource (google.cloud.compute_v1.types.BulkInsertInstanceResource):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    bulk_insert_instance_resource_resource: "BulkInsertInstanceResource" = proto.Field(
        proto.MESSAGE,
        number=41427278,
        message="BulkInsertInstanceResource",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class BulkInsertInstanceResource(proto.Message):
    r"""A transient resource used in compute.instances.bulkInsert and
    compute.regionInstances.bulkInsert . This resource is not
    persisted anywhere, it is used only for processing the requests.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        count (int):
            The maximum number of instances to create.

            This field is a member of `oneof`_ ``_count``.
        instance_properties (google.cloud.compute_v1.types.InstanceProperties):
            The instance properties defining the VM
            instances to be created. Required if
            sourceInstanceTemplate is not provided.

            This field is a member of `oneof`_ ``_instance_properties``.
        location_policy (google.cloud.compute_v1.types.LocationPolicy):
            Policy for chosing target zone. For more
            information, see Create VMs in bulk .

            This field is a member of `oneof`_ ``_location_policy``.
        min_count (int):
            The minimum number of instances to create. If no min_count
            is specified then count is used as the default value. If
            min_count instances cannot be created, then no instances
            will be created and instances already created will be
            deleted.

            This field is a member of `oneof`_ ``_min_count``.
        name_pattern (str):
            The string pattern used for the names of the VMs. Either
            name_pattern or per_instance_properties must be set. The
            pattern must contain one continuous sequence of placeholder
            hash characters (#) with each character corresponding to one
            digit of the generated instance name. Example: a
            name_pattern of inst-#### generates instance names such as
            inst-0001 and inst-0002. If existing instances in the same
            project and zone have names that match the name pattern then
            the generated instance numbers start after the biggest
            existing number. For example, if there exists an instance
            with name inst-0050, then instance names generated using the
            pattern inst-#### begin with inst-0051. The name pattern
            placeholder #...# can contain up to 18 characters.

            This field is a member of `oneof`_ ``_name_pattern``.
        per_instance_properties (MutableMapping[str, google.cloud.compute_v1.types.BulkInsertInstanceResourcePerInstanceProperties]):
            Per-instance properties to be set on individual instances.
            Keys of this map specify requested instance names. Can be
            empty if name_pattern is used.
        source_instance_template (str):
            Specifies the instance template from which to
            create instances. You may combine
            sourceInstanceTemplate with instanceProperties
            to override specific values from an existing
            instance template. Bulk API follows the
            semantics of JSON Merge Patch described by RFC
            7396. It can be a full or partial URL. For
            example, the following are all valid URLs to an
            instance template: -
            https://www.googleapis.com/compute/v1/projects/project
            /global/instanceTemplates/instanceTemplate -
            projects/project/global/instanceTemplates/instanceTemplate
            - global/instanceTemplates/instanceTemplate This
            field is optional.

            This field is a member of `oneof`_ ``_source_instance_template``.
    """

    count: int = proto.Field(
        proto.INT64,
        number=94851343,
        optional=True,
    )
    instance_properties: "InstanceProperties" = proto.Field(
        proto.MESSAGE,
        number=215355165,
        optional=True,
        message="InstanceProperties",
    )
    location_policy: "LocationPolicy" = proto.Field(
        proto.MESSAGE,
        number=465689852,
        optional=True,
        message="LocationPolicy",
    )
    min_count: int = proto.Field(
        proto.INT64,
        number=523228386,
        optional=True,
    )
    name_pattern: str = proto.Field(
        proto.STRING,
        number=413815260,
        optional=True,
    )
    per_instance_properties: MutableMapping[
        str, "BulkInsertInstanceResourcePerInstanceProperties"
    ] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=108502267,
        message="BulkInsertInstanceResourcePerInstanceProperties",
    )
    source_instance_template: str = proto.Field(
        proto.STRING,
        number=332423616,
        optional=True,
    )


class BulkInsertInstanceResourcePerInstanceProperties(proto.Message):
    r"""Per-instance properties to be set on individual instances. To
    be extended in the future.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            This field is only temporary. It will be
            removed. Do not use it.

            This field is a member of `oneof`_ ``_name``.
    """

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )


class BulkInsertRegionInstanceRequest(proto.Message):
    r"""A request message for RegionInstances.BulkInsert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bulk_insert_instance_resource_resource (google.cloud.compute_v1.types.BulkInsertInstanceResource):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    bulk_insert_instance_resource_resource: "BulkInsertInstanceResource" = proto.Field(
        proto.MESSAGE,
        number=41427278,
        message="BulkInsertInstanceResource",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class CacheInvalidationRule(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        host (str):
            If set, this invalidation rule will only
            apply to requests with a Host header matching
            host.

            This field is a member of `oneof`_ ``_host``.
        path (str):

            This field is a member of `oneof`_ ``_path``.
    """

    host: str = proto.Field(
        proto.STRING,
        number=3208616,
        optional=True,
    )
    path: str = proto.Field(
        proto.STRING,
        number=3433509,
        optional=True,
    )


class CacheKeyPolicy(proto.Message):
    r"""Message containing what to include in the cache key for a
    request for Cloud CDN.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        include_host (bool):
            If true, requests to different hosts will be
            cached separately.

            This field is a member of `oneof`_ ``_include_host``.
        include_http_headers (MutableSequence[str]):
            Allows HTTP request headers (by name) to be
            used in the cache key.
        include_named_cookies (MutableSequence[str]):
            Allows HTTP cookies (by name) to be used in
            the cache key. The name=value pair will be used
            in the cache key Cloud CDN generates.
        include_protocol (bool):
            If true, http and https requests will be
            cached separately.

            This field is a member of `oneof`_ ``_include_protocol``.
        include_query_string (bool):
            If true, include query string parameters in the cache key
            according to query_string_whitelist and
            query_string_blacklist. If neither is set, the entire query
            string will be included. If false, the query string will be
            excluded from the cache key entirely.

            This field is a member of `oneof`_ ``_include_query_string``.
        query_string_blacklist (MutableSequence[str]):
            Names of query string parameters to exclude in cache keys.
            All other parameters will be included. Either specify
            query_string_whitelist or query_string_blacklist, not both.
            '&' and '=' will be percent encoded and not treated as
            delimiters.
        query_string_whitelist (MutableSequence[str]):
            Names of query string parameters to include in cache keys.
            All other parameters will be excluded. Either specify
            query_string_whitelist or query_string_blacklist, not both.
            '&' and '=' will be percent encoded and not treated as
            delimiters.
    """

    include_host: bool = proto.Field(
        proto.BOOL,
        number=486867679,
        optional=True,
    )
    include_http_headers: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=2489606,
    )
    include_named_cookies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=87316530,
    )
    include_protocol: bool = proto.Field(
        proto.BOOL,
        number=303507535,
        optional=True,
    )
    include_query_string: bool = proto.Field(
        proto.BOOL,
        number=474036639,
        optional=True,
    )
    query_string_blacklist: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=354964742,
    )
    query_string_whitelist: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=52456496,
    )


class CircuitBreakers(proto.Message):
    r"""Settings controlling the volume of requests, connections and
    retries to this backend service.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        max_connections (int):
            The maximum number of connections to the
            backend service. If not specified, there is no
            limit. Not supported when the backend service is
            referenced by a URL map that is bound to target
            gRPC proxy that has validateForProxyless field
            set to true.

            This field is a member of `oneof`_ ``_max_connections``.
        max_pending_requests (int):
            The maximum number of pending requests
            allowed to the backend service. If not
            specified, there is no limit. Not supported when
            the backend service is referenced by a URL map
            that is bound to target gRPC proxy that has
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_max_pending_requests``.
        max_requests (int):
            The maximum number of parallel requests that
            allowed to the backend service. If not
            specified, there is no limit.

            This field is a member of `oneof`_ ``_max_requests``.
        max_requests_per_connection (int):
            Maximum requests for a single connection to
            the backend service. This parameter is respected
            by both the HTTP/1.1 and HTTP/2 implementations.
            If not specified, there is no limit. Setting
            this parameter to 1 will effectively disable
            keep alive. Not supported when the backend
            service is referenced by a URL map that is bound
            to target gRPC proxy that has
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_max_requests_per_connection``.
        max_retries (int):
            The maximum number of parallel retries
            allowed to the backend cluster. If not
            specified, the default is 1. Not supported when
            the backend service is referenced by a URL map
            that is bound to target gRPC proxy that has
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_max_retries``.
    """

    max_connections: int = proto.Field(
        proto.INT32,
        number=110652154,
        optional=True,
    )
    max_pending_requests: int = proto.Field(
        proto.INT32,
        number=375558887,
        optional=True,
    )
    max_requests: int = proto.Field(
        proto.INT32,
        number=28097599,
        optional=True,
    )
    max_requests_per_connection: int = proto.Field(
        proto.INT32,
        number=361630528,
        optional=True,
    )
    max_retries: int = proto.Field(
        proto.INT32,
        number=55546219,
        optional=True,
    )


class CloneRulesFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.CloneRules. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        source_firewall_policy (str):
            The firewall policy from which to copy rules.

            This field is a member of `oneof`_ ``_source_firewall_policy``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    source_firewall_policy: str = proto.Field(
        proto.STRING,
        number=25013549,
        optional=True,
    )


class CloneRulesNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.CloneRules. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        source_firewall_policy (str):
            The firewall policy from which to copy rules.

            This field is a member of `oneof`_ ``_source_firewall_policy``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    source_firewall_policy: str = proto.Field(
        proto.STRING,
        number=25013549,
        optional=True,
    )


class CloneRulesRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.CloneRules. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        source_firewall_policy (str):
            The firewall policy from which to copy rules.

            This field is a member of `oneof`_ ``_source_firewall_policy``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    source_firewall_policy: str = proto.Field(
        proto.STRING,
        number=25013549,
        optional=True,
    )


class Commitment(proto.Message):
    r"""Represents a regional Commitment resource. Creating a
    commitment resource means that you are purchasing a committed
    use contract with an explicit start and end time. You can create
    commitments based on vCPUs and memory usage and receive
    discounted rates. For full details, read Signing Up for
    Committed Use Discounts.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_renew (bool):
            Specifies whether to enable automatic renewal
            for the commitment. The default value is false
            if not specified. The field can be updated until
            the day of the commitment expiration at 12:00am
            PST. If the field is set to true, the commitment
            will be automatically renewed for either one or
            three years according to the terms of the
            existing commitment.

            This field is a member of `oneof`_ ``_auto_renew``.
        category (str):
            The category of the commitment. Category
            MACHINE specifies commitments composed of
            machine resources such as VCPU or MEMORY, listed
            in resources. Category LICENSE specifies
            commitments composed of software licenses,
            listed in licenseResources. Note that only
            MACHINE commitments should have a Type
            specified. Check the Category enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_category``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        end_timestamp (str):
            [Output Only] Commitment end time in RFC3339 text format.

            This field is a member of `oneof`_ ``_end_timestamp``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#commitment for commitments.

            This field is a member of `oneof`_ ``_kind``.
        license_resource (google.cloud.compute_v1.types.LicenseResourceCommitment):
            The license specification required as part of
            a license commitment.

            This field is a member of `oneof`_ ``_license_resource``.
        merge_source_commitments (MutableSequence[str]):
            List of source commitments to be merged into
            a new commitment.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        plan (str):
            The plan for this commitment, which determines duration and
            discount rate. The currently supported plans are
            TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years). Check
            the Plan enum for the list of possible values.

            This field is a member of `oneof`_ ``_plan``.
        region (str):
            [Output Only] URL of the region where this commitment may be
            used.

            This field is a member of `oneof`_ ``_region``.
        reservations (MutableSequence[google.cloud.compute_v1.types.Reservation]):
            List of reservations in this commitment.
        resources (MutableSequence[google.cloud.compute_v1.types.ResourceCommitment]):
            A list of commitment amounts for particular
            resources. Note that VCPU and MEMORY resource
            commitments must occur together.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        split_source_commitment (str):
            Source commitment to be splitted into a new
            commitment.

            This field is a member of `oneof`_ ``_split_source_commitment``.
        start_timestamp (str):
            [Output Only] Commitment start time in RFC3339 text format.

            This field is a member of `oneof`_ ``_start_timestamp``.
        status (str):
            [Output Only] Status of the commitment with regards to
            eventual expiration (each commitment has an end date
            defined). One of the following values: NOT_YET_ACTIVE,
            ACTIVE, EXPIRED. Check the Status enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_status``.
        status_message (str):
            [Output Only] An optional, human-readable explanation of the
            status.

            This field is a member of `oneof`_ ``_status_message``.
        type_ (str):
            The type of commitment, which affects the discount rate and
            the eligible resources. Type MEMORY_OPTIMIZED specifies a
            commitment that will only apply to memory optimized
            machines. Type ACCELERATOR_OPTIMIZED specifies a commitment
            that will only apply to accelerator optimized machines.
            Check the Type enum for the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Category(proto.Enum):
        r"""The category of the commitment. Category MACHINE specifies
        commitments composed of machine resources such as VCPU or
        MEMORY, listed in resources. Category LICENSE specifies
        commitments composed of software licenses, listed in
        licenseResources. Note that only MACHINE commitments should have
        a Type specified.

        Values:
            UNDEFINED_CATEGORY (0):
                A value indicating that the enum field is not
                set.
            CATEGORY_UNSPECIFIED (509189462):
                No description available.
            LICENSE (347869217):
                No description available.
            MACHINE (469553191):
                No description available.
        """
        UNDEFINED_CATEGORY = 0
        CATEGORY_UNSPECIFIED = 509189462
        LICENSE = 347869217
        MACHINE = 469553191

    class Plan(proto.Enum):
        r"""The plan for this commitment, which determines duration and discount
        rate. The currently supported plans are TWELVE_MONTH (1 year), and
        THIRTY_SIX_MONTH (3 years).

        Values:
            UNDEFINED_PLAN (0):
                A value indicating that the enum field is not
                set.
            INVALID (530283991):
                No description available.
            THIRTY_SIX_MONTH (266295942):
                No description available.
            TWELVE_MONTH (173083962):
                No description available.
        """
        UNDEFINED_PLAN = 0
        INVALID = 530283991
        THIRTY_SIX_MONTH = 266295942
        TWELVE_MONTH = 173083962

    class Status(proto.Enum):
        r"""[Output Only] Status of the commitment with regards to eventual
        expiration (each commitment has an end date defined). One of the
        following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                No description available.
            CANCELLED (41957681):
                Deprecate CANCELED status. Will use separate
                status to differentiate cancel by mergeCud or
                manual cancellation.
            CREATING (455564985):
                No description available.
            EXPIRED (482489093):
                No description available.
            NOT_YET_ACTIVE (20607337):
                No description available.
        """
        UNDEFINED_STATUS = 0
        ACTIVE = 314733318
        CANCELLED = 41957681
        CREATING = 455564985
        EXPIRED = 482489093
        NOT_YET_ACTIVE = 20607337

    class Type(proto.Enum):
        r"""The type of commitment, which affects the discount rate and the
        eligible resources. Type MEMORY_OPTIMIZED specifies a commitment
        that will only apply to memory optimized machines. Type
        ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to
        accelerator optimized machines.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            ACCELERATOR_OPTIMIZED (280848403):
                No description available.
            COMPUTE_OPTIMIZED (158349023):
                No description available.
            COMPUTE_OPTIMIZED_C2D (383246453):
                No description available.
            COMPUTE_OPTIMIZED_C3 (428004784):
                No description available.
            GENERAL_PURPOSE (299793543):
                No description available.
            GENERAL_PURPOSE_E2 (301911877):
                No description available.
            GENERAL_PURPOSE_N2 (301912156):
                No description available.
            GENERAL_PURPOSE_N2D (232471400):
                No description available.
            GENERAL_PURPOSE_T2D (232477166):
                No description available.
            MEMORY_OPTIMIZED (281753417):
                No description available.
            MEMORY_OPTIMIZED_M3 (276301372):
                No description available.
            TYPE_UNSPECIFIED (437714322):
                No description available.
        """
        UNDEFINED_TYPE = 0
        ACCELERATOR_OPTIMIZED = 280848403
        COMPUTE_OPTIMIZED = 158349023
        COMPUTE_OPTIMIZED_C2D = 383246453
        COMPUTE_OPTIMIZED_C3 = 428004784
        GENERAL_PURPOSE = 299793543
        GENERAL_PURPOSE_E2 = 301911877
        GENERAL_PURPOSE_N2 = 301912156
        GENERAL_PURPOSE_N2D = 232471400
        GENERAL_PURPOSE_T2D = 232477166
        MEMORY_OPTIMIZED = 281753417
        MEMORY_OPTIMIZED_M3 = 276301372
        TYPE_UNSPECIFIED = 437714322

    auto_renew: bool = proto.Field(
        proto.BOOL,
        number=495520765,
        optional=True,
    )
    category: str = proto.Field(
        proto.STRING,
        number=50511102,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    end_timestamp: str = proto.Field(
        proto.STRING,
        number=468096690,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    license_resource: "LicenseResourceCommitment" = proto.Field(
        proto.MESSAGE,
        number=437955148,
        optional=True,
        message="LicenseResourceCommitment",
    )
    merge_source_commitments: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=188093761,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    plan: str = proto.Field(
        proto.STRING,
        number=3443497,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    reservations: MutableSequence["Reservation"] = proto.RepeatedField(
        proto.MESSAGE,
        number=399717927,
        message="Reservation",
    )
    resources: MutableSequence["ResourceCommitment"] = proto.RepeatedField(
        proto.MESSAGE,
        number=164412965,
        message="ResourceCommitment",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    split_source_commitment: str = proto.Field(
        proto.STRING,
        number=402611156,
        optional=True,
    )
    start_timestamp: str = proto.Field(
        proto.STRING,
        number=83645817,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    status_message: str = proto.Field(
        proto.STRING,
        number=297428154,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class CommitmentAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.CommitmentsScopedList]):
            A list of CommitmentsScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#commitmentAggregatedList for aggregated lists of
            commitments.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "CommitmentsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="CommitmentsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class CommitmentList(proto.Message):
    r"""Contains a list of Commitment resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Commitment]):
            A list of Commitment resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#commitmentList for lists of commitments.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Commitment"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Commitment",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class CommitmentsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        commitments (MutableSequence[google.cloud.compute_v1.types.Commitment]):
            [Output Only] A list of commitments contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of commitments when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    commitments: MutableSequence["Commitment"] = proto.RepeatedField(
        proto.MESSAGE,
        number=450664446,
        message="Commitment",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class Condition(proto.Message):
    r"""This is deprecated and has no effect. Do not use.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        iam (str):
            This is deprecated and has no effect. Do not
            use. Check the Iam enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_iam``.
        op (str):
            This is deprecated and has no effect. Do not
            use. Check the Op enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_op``.
        svc (str):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_svc``.
        sys (str):
            This is deprecated and has no effect. Do not
            use. Check the Sys enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_sys``.
        values (MutableSequence[str]):
            This is deprecated and has no effect. Do not
            use.
    """

    class Iam(proto.Enum):
        r"""This is deprecated and has no effect. Do not use. Additional
        supported values which may be not listed in the enum directly due to
        technical reasons: NO_ATTR

        Values:
            UNDEFINED_IAM (0):
                A value indicating that the enum field is not
                set.
            APPROVER (357258949):
                This is deprecated and has no effect. Do not
                use.
            ATTRIBUTION (232465503):
                This is deprecated and has no effect. Do not
                use.
            AUTHORITY (504108835):
                This is deprecated and has no effect. Do not
                use.
            CREDENTIALS_TYPE (348222141):
                This is deprecated and has no effect. Do not
                use.
            CREDS_ASSERTION (332343272):
                This is deprecated and has no effect. Do not
                use.
            JUSTIFICATION_TYPE (206147719):
                This is deprecated and has no effect. Do not
                use.
            SECURITY_REALM (526269616):
                This is deprecated and has no effect. Do not
                use.
        """
        UNDEFINED_IAM = 0
        APPROVER = 357258949
        ATTRIBUTION = 232465503
        AUTHORITY = 504108835
        CREDENTIALS_TYPE = 348222141
        CREDS_ASSERTION = 332343272
        JUSTIFICATION_TYPE = 206147719
        SECURITY_REALM = 526269616

    class Op(proto.Enum):
        r"""This is deprecated and has no effect. Do not use.

        Values:
            UNDEFINED_OP (0):
                A value indicating that the enum field is not
                set.
            DISCHARGED (266338274):
                This is deprecated and has no effect. Do not
                use.
            EQUALS (442201023):
                This is deprecated and has no effect. Do not
                use.
            IN (2341):
                This is deprecated and has no effect. Do not
                use.
            NOT_EQUALS (19718859):
                This is deprecated and has no effect. Do not
                use.
            NOT_IN (161144369):
                This is deprecated and has no effect. Do not
                use.
            NO_OP (74481951):
                This is deprecated and has no effect. Do not
                use.
        """
        UNDEFINED_OP = 0
        DISCHARGED = 266338274
        EQUALS = 442201023
        IN = 2341
        NOT_EQUALS = 19718859
        NOT_IN = 161144369
        NO_OP = 74481951

    class Sys(proto.Enum):
        r"""This is deprecated and has no effect. Do not use. Additional
        supported values which may be not listed in the enum directly due to
        technical reasons: NO_ATTR

        Values:
            UNDEFINED_SYS (0):
                A value indicating that the enum field is not
                set.
            IP (2343):
                This is deprecated and has no effect. Do not
                use.
            NAME (2388619):
                This is deprecated and has no effect. Do not
                use.
            REGION (266017524):
                This is deprecated and has no effect. Do not
                use.
            SERVICE (17781397):
                This is deprecated and has no effect. Do not
                use.
        """
        UNDEFINED_SYS = 0
        IP = 2343
        NAME = 2388619
        REGION = 266017524
        SERVICE = 17781397

    iam: str = proto.Field(
        proto.STRING,
        number=104021,
        optional=True,
    )
    op: str = proto.Field(
        proto.STRING,
        number=3553,
        optional=True,
    )
    svc: str = proto.Field(
        proto.STRING,
        number=114272,
        optional=True,
    )
    sys: str = proto.Field(
        proto.STRING,
        number=114381,
        optional=True,
    )
    values: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=249928994,
    )


class ConfidentialInstanceConfig(proto.Message):
    r"""A set of Confidential Instance options.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enable_confidential_compute (bool):
            Defines whether the instance should have
            confidential compute enabled.

            This field is a member of `oneof`_ ``_enable_confidential_compute``.
    """

    enable_confidential_compute: bool = proto.Field(
        proto.BOOL,
        number=102135228,
        optional=True,
    )


class ConnectionDraining(proto.Message):
    r"""Message containing connection draining configuration.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        draining_timeout_sec (int):
            Configures a duration timeout for existing
            requests on a removed backend instance. For
            supported load balancers and protocols, as
            described in Enabling connection draining.

            This field is a member of `oneof`_ ``_draining_timeout_sec``.
    """

    draining_timeout_sec: int = proto.Field(
        proto.INT32,
        number=225127070,
        optional=True,
    )


class ConsistentHashLoadBalancerSettings(proto.Message):
    r"""This message defines settings for a consistent hash style
    load balancer.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        http_cookie (google.cloud.compute_v1.types.ConsistentHashLoadBalancerSettingsHttpCookie):
            Hash is based on HTTP Cookie. This field describes a HTTP
            cookie that will be used as the hash key for the consistent
            hash load balancer. If the cookie is not present, it will be
            generated. This field is applicable if the sessionAffinity
            is set to HTTP_COOKIE. Not supported when the backend
            service is referenced by a URL map that is bound to target
            gRPC proxy that has validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_http_cookie``.
        http_header_name (str):
            The hash based on the value of the specified header field.
            This field is applicable if the sessionAffinity is set to
            HEADER_FIELD.

            This field is a member of `oneof`_ ``_http_header_name``.
        minimum_ring_size (int):
            The minimum number of virtual nodes to use
            for the hash ring. Defaults to 1024. Larger ring
            sizes result in more granular load
            distributions. If the number of hosts in the
            load balancing pool is larger than the ring
            size, each host will be assigned a single
            virtual node.

            This field is a member of `oneof`_ ``_minimum_ring_size``.
    """

    http_cookie: "ConsistentHashLoadBalancerSettingsHttpCookie" = proto.Field(
        proto.MESSAGE,
        number=6673915,
        optional=True,
        message="ConsistentHashLoadBalancerSettingsHttpCookie",
    )
    http_header_name: str = proto.Field(
        proto.STRING,
        number=234798022,
        optional=True,
    )
    minimum_ring_size: int = proto.Field(
        proto.INT64,
        number=234380735,
        optional=True,
    )


class ConsistentHashLoadBalancerSettingsHttpCookie(proto.Message):
    r"""The information about the HTTP Cookie on which the hash
    function is based for load balancing policies that use a
    consistent hash.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            Name of the cookie.

            This field is a member of `oneof`_ ``_name``.
        path (str):
            Path to set for the cookie.

            This field is a member of `oneof`_ ``_path``.
        ttl (google.cloud.compute_v1.types.Duration):
            Lifetime of the cookie.

            This field is a member of `oneof`_ ``_ttl``.
    """

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    path: str = proto.Field(
        proto.STRING,
        number=3433509,
        optional=True,
    )
    ttl: "Duration" = proto.Field(
        proto.MESSAGE,
        number=115180,
        optional=True,
        message="Duration",
    )


class CorsPolicy(proto.Message):
    r"""The specification for allowing client-side cross-origin
    requests. For more information about the W3C recommendation for
    cross-origin resource sharing (CORS), see Fetch API Living
    Standard.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        allow_credentials (bool):
            In response to a preflight request, setting
            this to true indicates that the actual request
            can include user credentials. This field
            translates to the
            Access-Control-Allow-Credentials header. Default
            is false.

            This field is a member of `oneof`_ ``_allow_credentials``.
        allow_headers (MutableSequence[str]):
            Specifies the content for the
            Access-Control-Allow-Headers header.
        allow_methods (MutableSequence[str]):
            Specifies the content for the
            Access-Control-Allow-Methods header.
        allow_origin_regexes (MutableSequence[str]):
            Specifies a regular expression that matches allowed origins.
            For more information about the regular expression syntax,
            see Syntax. An origin is allowed if it matches either an
            item in allowOrigins or an item in allowOriginRegexes.
            Regular expressions can only be used when the
            loadBalancingScheme is set to INTERNAL_SELF_MANAGED.
        allow_origins (MutableSequence[str]):
            Specifies the list of origins that is allowed
            to do CORS requests. An origin is allowed if it
            matches either an item in allowOrigins or an
            item in allowOriginRegexes.
        disabled (bool):
            If true, the setting specifies the CORS
            policy is disabled. The default value of false,
            which indicates that the CORS policy is in
            effect.

            This field is a member of `oneof`_ ``_disabled``.
        expose_headers (MutableSequence[str]):
            Specifies the content for the
            Access-Control-Expose-Headers header.
        max_age (int):
            Specifies how long results of a preflight
            request can be cached in seconds. This field
            translates to the Access-Control-Max-Age header.

            This field is a member of `oneof`_ ``_max_age``.
    """

    allow_credentials: bool = proto.Field(
        proto.BOOL,
        number=481263366,
        optional=True,
    )
    allow_headers: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=45179024,
    )
    allow_methods: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=205405372,
    )
    allow_origin_regexes: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=215385810,
    )
    allow_origins: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=194914071,
    )
    disabled: bool = proto.Field(
        proto.BOOL,
        number=270940796,
        optional=True,
    )
    expose_headers: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=247604747,
    )
    max_age: int = proto.Field(
        proto.INT32,
        number=307559332,
        optional=True,
    )


class CreateInstancesInstanceGroupManagerRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.CreateInstances.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        instance_group_managers_create_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersCreateInstancesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. The request ID must be a valid UUID
            with the exception that zero UUID is not
            supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the managed
            instance group is located. It should conform to
            RFC1035.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_create_instances_request_resource: "InstanceGroupManagersCreateInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=24558867,
        message="InstanceGroupManagersCreateInstancesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class CreateInstancesRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.CreateInstances. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region where the managed
            instance group is located. It should conform to
            RFC1035.
        region_instance_group_managers_create_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersCreateInstancesRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. The request ID must be a valid UUID
            with the exception that zero UUID is not
            supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_managers_create_instances_request_resource: "RegionInstanceGroupManagersCreateInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=359014280,
        message="RegionInstanceGroupManagersCreateInstancesRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class CreateSnapshotDiskRequest(proto.Message):
    r"""A request message for Disks.CreateSnapshot. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            Name of the persistent disk to snapshot.
        guest_flush (bool):
            [Input Only] Whether to attempt an application consistent
            snapshot by informing the OS to prepare for the snapshot
            process.

            This field is a member of `oneof`_ ``_guest_flush``.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        snapshot_resource (google.cloud.compute_v1.types.Snapshot):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    guest_flush: bool = proto.Field(
        proto.BOOL,
        number=385550813,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    snapshot_resource: "Snapshot" = proto.Field(
        proto.MESSAGE,
        number=481319977,
        message="Snapshot",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class CreateSnapshotRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.CreateSnapshot. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            Name of the regional persistent disk to
            snapshot.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        snapshot_resource (google.cloud.compute_v1.types.Snapshot):
            The body resource for this request
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    snapshot_resource: "Snapshot" = proto.Field(
        proto.MESSAGE,
        number=481319977,
        message="Snapshot",
    )


class CustomerEncryptionKey(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        kms_key_name (str):
            The name of the encryption key that is stored in Google
            Cloud KMS. For example: "kmsKeyName":
            "projects/kms_project_id/locations/region/keyRings/
            key_region/cryptoKeys/key

            This field is a member of `oneof`_ ``_kms_key_name``.
        kms_key_service_account (str):
            The service account being used for the encryption request
            for the given KMS key. If absent, the Compute Engine default
            service account is used. For example:
            "kmsKeyServiceAccount":
            "name@project_id.iam.gserviceaccount.com/

            This field is a member of `oneof`_ ``_kms_key_service_account``.
        raw_key (str):
            Specifies a 256-bit customer-supplied
            encryption key, encoded in RFC 4648 base64 to
            either encrypt or decrypt this resource. You can
            provide either the rawKey or the
            rsaEncryptedKey. For example: "rawKey":
            "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=".

            This field is a member of `oneof`_ ``_raw_key``.
        rsa_encrypted_key (str):
            Specifies an RFC 4648 base64 encoded,
            RSA-wrapped 2048-bit customer-supplied
            encryption key to either encrypt or decrypt this
            resource. You can provide either the rawKey or
            the rsaEncryptedKey. For example:
            "rsaEncryptedKey":
            "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFH
            z0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoD
            D6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oe=="
            The key must meet the following requirements
            before you can provide it to Compute Engine: 1.
            The key is wrapped using a RSA public key
            certificate provided by Google. 2. After being
            wrapped, the key must be encoded in RFC 4648
            base64 encoding. Gets the RSA public key
            certificate provided by Google at:
            https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem

            This field is a member of `oneof`_ ``_rsa_encrypted_key``.
        sha256 (str):
            [Output only] The RFC 4648 base64 encoded SHA-256 hash of
            the customer-supplied encryption key that protects this
            resource.

            This field is a member of `oneof`_ ``_sha256``.
    """

    kms_key_name: str = proto.Field(
        proto.STRING,
        number=484373913,
        optional=True,
    )
    kms_key_service_account: str = proto.Field(
        proto.STRING,
        number=209986261,
        optional=True,
    )
    raw_key: str = proto.Field(
        proto.STRING,
        number=449196488,
        optional=True,
    )
    rsa_encrypted_key: str = proto.Field(
        proto.STRING,
        number=335487397,
        optional=True,
    )
    sha256: str = proto.Field(
        proto.STRING,
        number=170112551,
        optional=True,
    )


class CustomerEncryptionKeyProtectedDisk(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            Decrypts data associated with the disk with a
            customer-supplied encryption key.

            This field is a member of `oneof`_ ``_disk_encryption_key``.
        source (str):
            Specifies a valid partial or full URL to an existing
            Persistent Disk resource. This field is only applicable for
            persistent disks. For example: "source":
            "/compute/v1/projects/project_id/zones/zone/disks/ disk_name

            This field is a member of `oneof`_ ``_source``.
    """

    disk_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=271660677,
        optional=True,
        message="CustomerEncryptionKey",
    )
    source: str = proto.Field(
        proto.STRING,
        number=177235995,
        optional=True,
    )


class Data(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        key (str):
            [Output Only] A key that provides more detail on the warning
            being returned. For example, for warnings where there are no
            results in a list request for a particular zone, this key
            might be scope and the key value might be the zone name.
            Other examples might be a key indicating a deprecated
            resource and a suggested replacement, or a warning about
            invalid network settings (for example, if an instance
            attempts to perform IP forwarding but is not enabled for IP
            forwarding).

            This field is a member of `oneof`_ ``_key``.
        value (str):
            [Output Only] A warning data value corresponding to the key.

            This field is a member of `oneof`_ ``_value``.
    """

    key: str = proto.Field(
        proto.STRING,
        number=106079,
        optional=True,
    )
    value: str = proto.Field(
        proto.STRING,
        number=111972721,
        optional=True,
    )


class DeleteAccessConfigInstanceRequest(proto.Message):
    r"""A request message for Instances.DeleteAccessConfig. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        access_config (str):
            The name of the access config to delete.
        instance (str):
            The instance name for this request.
        network_interface (str):
            The name of the network interface.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    access_config: str = proto.Field(
        proto.STRING,
        number=72856189,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    network_interface: str = proto.Field(
        proto.STRING,
        number=365387880,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteAddressRequest(proto.Message):
    r"""A request message for Addresses.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        address (str):
            Name of the address resource to delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    address: str = proto.Field(
        proto.STRING,
        number=462920692,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteAutoscalerRequest(proto.Message):
    r"""A request message for Autoscalers.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaler (str):
            Name of the autoscaler to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            Name of the zone for this request.
    """

    autoscaler: str = proto.Field(
        proto.STRING,
        number=517258967,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteBackendBucketRequest(proto.Message):
    r"""A request message for BackendBuckets.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_bucket (str):
            Name of the BackendBucket resource to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_bucket: str = proto.Field(
        proto.STRING,
        number=91714037,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to
            delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteDiskRequest(proto.Message):
    r"""A request message for Disks.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            Name of the persistent disk to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteExternalVpnGatewayRequest(proto.Message):
    r"""A request message for ExternalVpnGateways.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        external_vpn_gateway (str):
            Name of the externalVpnGateways to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    external_vpn_gateway: str = proto.Field(
        proto.STRING,
        number=109898629,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to delete.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteFirewallRequest(proto.Message):
    r"""A request message for Firewalls.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall (str):
            Name of the firewall rule to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall: str = proto.Field(
        proto.STRING,
        number=511016192,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteForwardingRuleRequest(proto.Message):
    r"""A request message for ForwardingRules.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rule (str):
            Name of the ForwardingRule resource to
            delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteGlobalAddressRequest(proto.Message):
    r"""A request message for GlobalAddresses.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        address (str):
            Name of the address resource to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    address: str = proto.Field(
        proto.STRING,
        number=462920692,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteGlobalForwardingRuleRequest(proto.Message):
    r"""A request message for GlobalForwardingRules.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rule (str):
            Name of the ForwardingRule resource to
            delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteGlobalNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for GlobalNetworkEndpointGroups.Delete. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_endpoint_group (str):
            The name of the network endpoint group to
            delete. It should comply with RFC1035.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteGlobalOperationRequest(proto.Message):
    r"""A request message for GlobalOperations.Delete. See the method
    description for details.

    Attributes:
        operation (str):
            Name of the Operations resource to delete.
        project (str):
            Project ID for this request.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class DeleteGlobalOperationResponse(proto.Message):
    r"""A response message for GlobalOperations.Delete. See the
    method description for details.

    """


class DeleteGlobalOrganizationOperationRequest(proto.Message):
    r"""A request message for GlobalOrganizationOperations.Delete.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        operation (str):
            Name of the Operations resource to delete.
        parent_id (str):
            Parent ID for this request.

            This field is a member of `oneof`_ ``_parent_id``.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    parent_id: str = proto.Field(
        proto.STRING,
        number=459714768,
        optional=True,
    )


class DeleteGlobalOrganizationOperationResponse(proto.Message):
    r"""A response message for GlobalOrganizationOperations.Delete.
    See the method description for details.

    """


class DeleteGlobalPublicDelegatedPrefixeRequest(proto.Message):
    r"""A request message for GlobalPublicDelegatedPrefixes.Delete.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        public_delegated_prefix (str):
            Name of the PublicDelegatedPrefix resource to
            delete.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_delegated_prefix: str = proto.Field(
        proto.STRING,
        number=204238440,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteHealthCheckRequest(proto.Message):
    r"""A request message for HealthChecks.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check (str):
            Name of the HealthCheck resource to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteImageRequest(proto.Message):
    r"""A request message for Images.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        image (str):
            Name of the image resource to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    image: str = proto.Field(
        proto.STRING,
        number=100313435,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteInstanceGroupManagerRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group to
            delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteInstanceGroupRequest(proto.Message):
    r"""A request message for InstanceGroups.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group (str):
            The name of the instance group to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the instance group
            is located.
    """

    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteInstanceRequest(proto.Message):
    r"""A request message for Instances.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance resource to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteInstanceTemplateRequest(proto.Message):
    r"""A request message for InstanceTemplates.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_template (str):
            The name of the instance template to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_template: str = proto.Field(
        proto.STRING,
        number=309248228,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteInstancesInstanceGroupManagerRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.DeleteInstances.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group.
        instance_group_managers_delete_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersDeleteInstancesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_delete_instances_request_resource: "InstanceGroupManagersDeleteInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=166421252,
        message="InstanceGroupManagersDeleteInstancesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteInstancesRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.DeleteInstances. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            Name of the managed instance group.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        region_instance_group_managers_delete_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersDeleteInstancesRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_managers_delete_instances_request_resource: "RegionInstanceGroupManagersDeleteInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=500876665,
        message="RegionInstanceGroupManagersDeleteInstancesRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteInterconnectAttachmentRequest(proto.Message):
    r"""A request message for InterconnectAttachments.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        interconnect_attachment (str):
            Name of the interconnect attachment to
            delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    interconnect_attachment: str = proto.Field(
        proto.STRING,
        number=308135284,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteInterconnectRequest(proto.Message):
    r"""A request message for Interconnects.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        interconnect (str):
            Name of the interconnect to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    interconnect: str = proto.Field(
        proto.STRING,
        number=224601230,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteLicenseRequest(proto.Message):
    r"""A request message for Licenses.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        license_ (str):
            Name of the license resource to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    license_: str = proto.Field(
        proto.STRING,
        number=166757441,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteMachineImageRequest(proto.Message):
    r"""A request message for MachineImages.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        machine_image (str):
            The name of the machine image to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    machine_image: str = proto.Field(
        proto.STRING,
        number=69189475,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteNetworkAttachmentRequest(proto.Message):
    r"""A request message for NetworkAttachments.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_attachment (str):
            Name of the NetworkAttachment resource to
            delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region of this request.
        request_id (str):
            An optional request ID to identify requests. Specify a
            unique request ID so that if you must retry your request,
            the server will know to ignore the request if it has already
            been completed. For example, consider a situation where you
            make an initial request and the request times out. If you
            make the request again with the same request ID, the server
            can check if original operation with the same request ID was
            received, and if so, will ignore the second request. This
            prevents clients from accidentally creating duplicate
            commitments. The request ID must be a valid UUID with the
            exception that zero UUID is not supported (
            00000000-0000-0000-0000-000000000000). end_interface:
            MixerMutationRequestBuilder

            This field is a member of `oneof`_ ``_request_id``.
    """

    network_attachment: str = proto.Field(
        proto.STRING,
        number=224644052,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteNetworkEdgeSecurityServiceRequest(proto.Message):
    r"""A request message for NetworkEdgeSecurityServices.Delete. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_edge_security_service (str):
            Name of the network edge security service to
            delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network_edge_security_service: str = proto.Field(
        proto.STRING,
        number=157011879,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for NetworkEndpointGroups.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_endpoint_group (str):
            The name of the network endpoint group to
            delete. It should comply with RFC1035.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the network
            endpoint group is located. It should comply with
            RFC1035.
    """

    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteNetworkRequest(proto.Message):
    r"""A request message for Networks.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network (str):
            Name of the network to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_group (str):
            Name of the NodeGroup resource to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    node_group: str = proto.Field(
        proto.STRING,
        number=469958146,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteNodeTemplateRequest(proto.Message):
    r"""A request message for NodeTemplates.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_template (str):
            Name of the NodeTemplate resource to delete.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    node_template: str = proto.Field(
        proto.STRING,
        number=323154455,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteNodesNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.DeleteNodes. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_group (str):
            Name of the NodeGroup resource whose nodes
            will be deleted.
        node_groups_delete_nodes_request_resource (google.cloud.compute_v1.types.NodeGroupsDeleteNodesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    node_group: str = proto.Field(
        proto.STRING,
        number=469958146,
    )
    node_groups_delete_nodes_request_resource: "NodeGroupsDeleteNodesRequest" = (
        proto.Field(
            proto.MESSAGE,
            number=183298962,
            message="NodeGroupsDeleteNodesRequest",
        )
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeletePacketMirroringRequest(proto.Message):
    r"""A request message for PacketMirrorings.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        packet_mirroring (str):
            Name of the PacketMirroring resource to
            delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    packet_mirroring: str = proto.Field(
        proto.STRING,
        number=22305996,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeletePerInstanceConfigsInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    InstanceGroupManagers.DeletePerInstanceConfigs. See the method
    description for details.

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        instance_group_managers_delete_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersDeletePerInstanceConfigsReq):
            The body resource for this request
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone where the managed
            instance group is located. It should conform to
            RFC1035.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_delete_per_instance_configs_req_resource: "InstanceGroupManagersDeletePerInstanceConfigsReq" = proto.Field(
        proto.MESSAGE,
        number=362427680,
        message="InstanceGroupManagersDeletePerInstanceConfigsReq",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeletePerInstanceConfigsRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.DeletePerInstanceConfigs. See the
    method description for details.

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request,
            should conform to RFC1035.
        region_instance_group_manager_delete_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerDeleteInstanceConfigReq):
            The body resource for this request
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_manager_delete_instance_config_req_resource: "RegionInstanceGroupManagerDeleteInstanceConfigReq" = proto.Field(
        proto.MESSAGE,
        number=740741,
        message="RegionInstanceGroupManagerDeleteInstanceConfigReq",
    )


class DeletePublicAdvertisedPrefixeRequest(proto.Message):
    r"""A request message for PublicAdvertisedPrefixes.Delete. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        public_advertised_prefix (str):
            Name of the PublicAdvertisedPrefix resource
            to delete.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_advertised_prefix: str = proto.Field(
        proto.STRING,
        number=101874590,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeletePublicDelegatedPrefixeRequest(proto.Message):
    r"""A request message for PublicDelegatedPrefixes.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        public_delegated_prefix (str):
            Name of the PublicDelegatedPrefix resource to
            delete.
        region (str):
            Name of the region of this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_delegated_prefix: str = proto.Field(
        proto.STRING,
        number=204238440,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionAutoscalerRequest(proto.Message):
    r"""A request message for RegionAutoscalers.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaler (str):
            Name of the autoscaler to delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    autoscaler: str = proto.Field(
        proto.STRING,
        number=517258967,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionBackendServiceRequest(proto.Message):
    r"""A request message for RegionBackendServices.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to
            delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            Name of the regional persistent disk to
            delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionHealthCheckRequest(proto.Message):
    r"""A request message for RegionHealthChecks.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check (str):
            Name of the HealthCheck resource to delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionHealthCheckServiceRequest(proto.Message):
    r"""A request message for RegionHealthCheckServices.Delete. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check_service (str):
            Name of the HealthCheckService to delete. The
            name must be 1-63 characters long, and comply
            with RFC1035.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check_service: str = proto.Field(
        proto.STRING,
        number=408374747,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for RegionInstanceGroupManagers.Delete. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            Name of the managed instance group to delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionInstanceTemplateRequest(proto.Message):
    r"""A request message for RegionInstanceTemplates.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_template (str):
            The name of the instance template to delete.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_template: str = proto.Field(
        proto.STRING,
        number=309248228,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for RegionNetworkEndpointGroups.Delete. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_endpoint_group (str):
            The name of the network endpoint group to
            delete. It should comply with RFC1035.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region where the network
            endpoint group is located. It should comply with
            RFC1035.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for RegionNetworkFirewallPolicies.Delete.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionNotificationEndpointRequest(proto.Message):
    r"""A request message for RegionNotificationEndpoints.Delete. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        notification_endpoint (str):
            Name of the NotificationEndpoint resource to
            delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    notification_endpoint: str = proto.Field(
        proto.STRING,
        number=376807017,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteRegionOperationRequest(proto.Message):
    r"""A request message for RegionOperations.Delete. See the method
    description for details.

    Attributes:
        operation (str):
            Name of the Operations resource to delete.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class DeleteRegionOperationResponse(proto.Message):
    r"""A response message for RegionOperations.Delete. See the
    method description for details.

    """


class DeleteRegionSecurityPolicyRequest(proto.Message):
    r"""A request message for RegionSecurityPolicies.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        security_policy (str):
            Name of the security policy to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )


class DeleteRegionSslCertificateRequest(proto.Message):
    r"""A request message for RegionSslCertificates.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_certificate (str):
            Name of the SslCertificate resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_certificate: str = proto.Field(
        proto.STRING,
        number=46443492,
    )


class DeleteRegionSslPolicyRequest(proto.Message):
    r"""A request message for RegionSslPolicies.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_policy (str):
            Name of the SSL policy to delete. The name
            must be 1-63 characters long, and comply with
            RFC1035.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_policy: str = proto.Field(
        proto.STRING,
        number=295190213,
    )


class DeleteRegionTargetHttpProxyRequest(proto.Message):
    r"""A request message for RegionTargetHttpProxies.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_http_proxy (str):
            Name of the TargetHttpProxy resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_http_proxy: str = proto.Field(
        proto.STRING,
        number=206872421,
    )


class DeleteRegionTargetHttpsProxyRequest(proto.Message):
    r"""A request message for RegionTargetHttpsProxies.Delete. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )


class DeleteRegionTargetTcpProxyRequest(proto.Message):
    r"""A request message for RegionTargetTcpProxies.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_tcp_proxy (str):
            Name of the TargetTcpProxy resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_tcp_proxy: str = proto.Field(
        proto.STRING,
        number=503065442,
    )


class DeleteRegionUrlMapRequest(proto.Message):
    r"""A request message for RegionUrlMaps.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            begin_interface: MixerMutationRequestBuilder Request ID to
            support idempotency.

            This field is a member of `oneof`_ ``_request_id``.
        url_map (str):
            Name of the UrlMap resource to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )


class DeleteReservationRequest(proto.Message):
    r"""A request message for Reservations.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        reservation (str):
            Name of the reservation to delete.
        zone (str):
            Name of the zone for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    reservation: str = proto.Field(
        proto.STRING,
        number=47530956,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteResourcePolicyRequest(proto.Message):
    r"""A request message for ResourcePolicies.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource_policy (str):
            Name of the resource policy to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource_policy: str = proto.Field(
        proto.STRING,
        number=159240835,
    )


class DeleteRouteRequest(proto.Message):
    r"""A request message for Routes.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        route (str):
            Name of the Route resource to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    route: str = proto.Field(
        proto.STRING,
        number=108704329,
    )


class DeleteRouterRequest(proto.Message):
    r"""A request message for Routers.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        router (str):
            Name of the Router resource to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    router: str = proto.Field(
        proto.STRING,
        number=148608841,
    )


class DeleteSecurityPolicyRequest(proto.Message):
    r"""A request message for SecurityPolicies.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        security_policy (str):
            Name of the security policy to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )


class DeleteServiceAttachmentRequest(proto.Message):
    r"""A request message for ServiceAttachments.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region of this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        service_attachment (str):
            Name of the ServiceAttachment resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    service_attachment: str = proto.Field(
        proto.STRING,
        number=338957549,
    )


class DeleteSignedUrlKeyBackendBucketRequest(proto.Message):
    r"""A request message for BackendBuckets.DeleteSignedUrlKey. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_bucket (str):
            Name of the BackendBucket resource to which
            the Signed URL Key should be added. The name
            should conform to RFC1035.
        key_name (str):
            The name of the Signed URL Key to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_bucket: str = proto.Field(
        proto.STRING,
        number=91714037,
    )
    key_name: str = proto.Field(
        proto.STRING,
        number=500938859,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteSignedUrlKeyBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.DeleteSignedUrlKey. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to which
            the Signed URL Key should be added. The name
            should conform to RFC1035.
        key_name (str):
            The name of the Signed URL Key to delete.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    key_name: str = proto.Field(
        proto.STRING,
        number=500938859,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeleteSnapshotRequest(proto.Message):
    r"""A request message for Snapshots.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        snapshot (str):
            Name of the Snapshot resource to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    snapshot: str = proto.Field(
        proto.STRING,
        number=284874180,
    )


class DeleteSslCertificateRequest(proto.Message):
    r"""A request message for SslCertificates.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_certificate (str):
            Name of the SslCertificate resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_certificate: str = proto.Field(
        proto.STRING,
        number=46443492,
    )


class DeleteSslPolicyRequest(proto.Message):
    r"""A request message for SslPolicies.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_policy (str):
            Name of the SSL policy to delete. The name
            must be 1-63 characters long, and comply with
            RFC1035.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_policy: str = proto.Field(
        proto.STRING,
        number=295190213,
    )


class DeleteSubnetworkRequest(proto.Message):
    r"""A request message for Subnetworks.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        subnetwork (str):
            Name of the Subnetwork resource to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
    )


class DeleteTargetGrpcProxyRequest(proto.Message):
    r"""A request message for TargetGrpcProxies.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_grpc_proxy (str):
            Name of the TargetGrpcProxy resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_grpc_proxy: str = proto.Field(
        proto.STRING,
        number=5020283,
    )


class DeleteTargetHttpProxyRequest(proto.Message):
    r"""A request message for TargetHttpProxies.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_http_proxy (str):
            Name of the TargetHttpProxy resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_http_proxy: str = proto.Field(
        proto.STRING,
        number=206872421,
    )


class DeleteTargetHttpsProxyRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )


class DeleteTargetInstanceRequest(proto.Message):
    r"""A request message for TargetInstances.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_instance (str):
            Name of the TargetInstance resource to
            delete.
        zone (str):
            Name of the zone scoping this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_instance: str = proto.Field(
        proto.STRING,
        number=289769347,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteTargetPoolRequest(proto.Message):
    r"""A request message for TargetPools.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_pool (str):
            Name of the TargetPool resource to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_pool: str = proto.Field(
        proto.STRING,
        number=62796298,
    )


class DeleteTargetSslProxyRequest(proto.Message):
    r"""A request message for TargetSslProxies.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_ssl_proxy (str):
            Name of the TargetSslProxy resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_ssl_proxy: str = proto.Field(
        proto.STRING,
        number=338795853,
    )


class DeleteTargetTcpProxyRequest(proto.Message):
    r"""A request message for TargetTcpProxies.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_tcp_proxy (str):
            Name of the TargetTcpProxy resource to
            delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_tcp_proxy: str = proto.Field(
        proto.STRING,
        number=503065442,
    )


class DeleteTargetVpnGatewayRequest(proto.Message):
    r"""A request message for TargetVpnGateways.Delete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_vpn_gateway (str):
            Name of the target VPN gateway to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_vpn_gateway: str = proto.Field(
        proto.STRING,
        number=532512843,
    )


class DeleteUrlMapRequest(proto.Message):
    r"""A request message for UrlMaps.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        url_map (str):
            Name of the UrlMap resource to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )


class DeleteVpnGatewayRequest(proto.Message):
    r"""A request message for VpnGateways.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        vpn_gateway (str):
            Name of the VPN gateway to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    vpn_gateway: str = proto.Field(
        proto.STRING,
        number=406684153,
    )


class DeleteVpnTunnelRequest(proto.Message):
    r"""A request message for VpnTunnels.Delete. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        vpn_tunnel (str):
            Name of the VpnTunnel resource to delete.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    vpn_tunnel: str = proto.Field(
        proto.STRING,
        number=143821331,
    )


class DeleteZoneOperationRequest(proto.Message):
    r"""A request message for ZoneOperations.Delete. See the method
    description for details.

    Attributes:
        operation (str):
            Name of the Operations resource to delete.
        project (str):
            Project ID for this request.
        zone (str):
            Name of the zone for this request.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DeleteZoneOperationResponse(proto.Message):
    r"""A response message for ZoneOperations.Delete. See the method
    description for details.

    """


class Denied(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        I_p_protocol (str):
            The IP protocol to which this rule applies.
            The protocol type is required when creating a
            firewall rule. This value can either be one of
            the following well known protocol strings (tcp,
            udp, icmp, esp, ah, ipip, sctp) or the IP
            protocol number.

            This field is a member of `oneof`_ ``_I_p_protocol``.
        ports (MutableSequence[str]):
            An optional list of ports to which this rule applies. This
            field is only applicable for the UDP or TCP protocol. Each
            entry must be either an integer or a range. If not
            specified, this rule applies to connections through any
            port. Example inputs include: ["22"], ["80","443"], and
            ["12345-12349"].
    """

    I_p_protocol: str = proto.Field(
        proto.STRING,
        number=488094525,
        optional=True,
    )
    ports: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=106854418,
    )


class DeprecateImageRequest(proto.Message):
    r"""A request message for Images.Deprecate. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        deprecation_status_resource (google.cloud.compute_v1.types.DeprecationStatus):
            The body resource for this request
        image (str):
            Image name.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    deprecation_status_resource: "DeprecationStatus" = proto.Field(
        proto.MESSAGE,
        number=333006064,
        message="DeprecationStatus",
    )
    image: str = proto.Field(
        proto.STRING,
        number=100313435,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DeprecationStatus(proto.Message):
    r"""Deprecation status for a public resource.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        deleted (str):
            An optional RFC3339 timestamp on or after
            which the state of this resource is intended to
            change to DELETED. This is only informational
            and the status will not change unless the client
            explicitly changes it.

            This field is a member of `oneof`_ ``_deleted``.
        deprecated (str):
            An optional RFC3339 timestamp on or after
            which the state of this resource is intended to
            change to DEPRECATED. This is only informational
            and the status will not change unless the client
            explicitly changes it.

            This field is a member of `oneof`_ ``_deprecated``.
        obsolete (str):
            An optional RFC3339 timestamp on or after
            which the state of this resource is intended to
            change to OBSOLETE. This is only informational
            and the status will not change unless the client
            explicitly changes it.

            This field is a member of `oneof`_ ``_obsolete``.
        replacement (str):
            The URL of the suggested replacement for a
            deprecated resource. The suggested replacement
            resource must be the same kind of resource as
            the deprecated resource.

            This field is a member of `oneof`_ ``_replacement``.
        state (str):
            The deprecation state of this resource. This
            can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED.
            Operations which communicate the end of life
            date for an image, can use ACTIVE. Operations
            which create a new resource using a DEPRECATED
            resource will return successfully, but with a
            warning indicating the deprecated resource and
            recommending its replacement. Operations which
            use OBSOLETE or DELETED resources will be
            rejected and result in an error. Check the State
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_state``.
    """

    class State(proto.Enum):
        r"""The deprecation state of this resource. This can be ACTIVE,
        DEPRECATED, OBSOLETE, or DELETED. Operations which communicate
        the end of life date for an image, can use ACTIVE. Operations
        which create a new resource using a DEPRECATED resource will
        return successfully, but with a warning indicating the
        deprecated resource and recommending its replacement. Operations
        which use OBSOLETE or DELETED resources will be rejected and
        result in an error.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                No description available.
            DELETED (120962041):
                No description available.
            DEPRECATED (463360435):
                No description available.
            OBSOLETE (66532761):
                No description available.
        """
        UNDEFINED_STATE = 0
        ACTIVE = 314733318
        DELETED = 120962041
        DEPRECATED = 463360435
        OBSOLETE = 66532761

    deleted: str = proto.Field(
        proto.STRING,
        number=476721177,
        optional=True,
    )
    deprecated: str = proto.Field(
        proto.STRING,
        number=515138995,
        optional=True,
    )
    obsolete: str = proto.Field(
        proto.STRING,
        number=357647769,
        optional=True,
    )
    replacement: str = proto.Field(
        proto.STRING,
        number=430919186,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )


class DetachDiskInstanceRequest(proto.Message):
    r"""A request message for Instances.DetachDisk. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        device_name (str):
            The device name of the disk to detach. Make a
            get() request on the instance to view currently
            attached disks and device names.
        instance (str):
            Instance name for this request.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    device_name: str = proto.Field(
        proto.STRING,
        number=67541716,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for
    GlobalNetworkEndpointGroups.DetachNetworkEndpoints. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        global_network_endpoint_groups_detach_endpoints_request_resource (google.cloud.compute_v1.types.GlobalNetworkEndpointGroupsDetachEndpointsRequest):
            The body resource for this request
        network_endpoint_group (str):
            The name of the network endpoint group where
            you are removing network endpoints. It should
            comply with RFC1035.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    global_network_endpoint_groups_detach_endpoints_request_resource: "GlobalNetworkEndpointGroupsDetachEndpointsRequest" = proto.Field(
        proto.MESSAGE,
        number=8898269,
        message="GlobalNetworkEndpointGroupsDetachEndpointsRequest",
    )
    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DetachNetworkEndpointsNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for
    NetworkEndpointGroups.DetachNetworkEndpoints. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_endpoint_group (str):
            The name of the network endpoint group where
            you are removing network endpoints. It should
            comply with RFC1035.
        network_endpoint_groups_detach_endpoints_request_resource (google.cloud.compute_v1.types.NetworkEndpointGroupsDetachEndpointsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the network
            endpoint group is located. It should comply with
            RFC1035.
    """

    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    network_endpoint_groups_detach_endpoints_request_resource: "NetworkEndpointGroupsDetachEndpointsRequest" = proto.Field(
        proto.MESSAGE,
        number=515608697,
        message="NetworkEndpointGroupsDetachEndpointsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class DisableXpnHostProjectRequest(proto.Message):
    r"""A request message for Projects.DisableXpnHost. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class DisableXpnResourceProjectRequest(proto.Message):
    r"""A request message for Projects.DisableXpnResource. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        projects_disable_xpn_resource_request_resource (google.cloud.compute_v1.types.ProjectsDisableXpnResourceRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    projects_disable_xpn_resource_request_resource: "ProjectsDisableXpnResourceRequest" = proto.Field(
        proto.MESSAGE,
        number=209136170,
        message="ProjectsDisableXpnResourceRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class Disk(proto.Message):
    r"""Represents a Persistent Disk resource. Google Compute Engine has two
    Disk resources: \* `Zonal </compute/docs/reference/rest/v1/disks>`__
    \* `Regional </compute/docs/reference/rest/v1/regionDisks>`__
    Persistent disks are required for running your VM instances. Create
    both boot and non-boot (data) persistent disks. For more
    information, read Persistent Disks. For more storage options, read
    Storage options. The disks resource represents a zonal persistent
    disk. For more information, read Zonal persistent disks. The
    regionDisks resource represents a regional persistent disk. For more
    information, read Regional resources.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        architecture (str):
            The architecture of the disk. Valid values are ARM64 or
            X86_64. Check the Architecture enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_architecture``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        disk_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            Encrypts the disk using a customer-supplied encryption key
            or a customer-managed encryption key. Encryption keys do not
            protect access to metadata of the disk. After you encrypt a
            disk with a customer-supplied key, you must provide the same
            key if you use the disk later. For example, to create a disk
            snapshot, to create a disk image, to create a machine image,
            or to attach the disk to a virtual machine. After you
            encrypt a disk with a customer-managed key, the
            diskEncryptionKey.kmsKeyName is set to a key *version* name
            once the disk is created. The disk is encrypted with this
            version of the key. In the response,
            diskEncryptionKey.kmsKeyName appears in the following
            format: "diskEncryptionKey.kmsKeyName":
            "projects/kms_project_id/locations/region/keyRings/
            key_region/cryptoKeys/key /cryptoKeysVersions/version If you
            do not provide an encryption key when creating the disk,
            then the disk is encrypted using an automatically generated
            key and you don't need to provide a key to use the disk
            later.

            This field is a member of `oneof`_ ``_disk_encryption_key``.
        guest_os_features (MutableSequence[google.cloud.compute_v1.types.GuestOsFeature]):
            A list of features to enable on the guest
            operating system. Applicable only for bootable
            images. Read Enabling guest operating system
            features to see a list of available options.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always compute#disk for
            disks.

            This field is a member of `oneof`_ ``_kind``.
        label_fingerprint (str):
            A fingerprint for the labels being applied to
            this disk, which is essentially a hash of the
            labels set used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update labels. You must always provide an
            up-to-date fingerprint hash in order to update
            or change labels, otherwise the request will
            fail with error 412 conditionNotMet. To see the
            latest fingerprint, make a get() request to
            retrieve a disk.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            Labels to apply to this disk. These can be
            later modified by the setLabels method.
        last_attach_timestamp (str):
            [Output Only] Last attach timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_last_attach_timestamp``.
        last_detach_timestamp (str):
            [Output Only] Last detach timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_last_detach_timestamp``.
        license_codes (MutableSequence[int]):
            Integer license codes indicating which
            licenses are attached to this disk.
        licenses (MutableSequence[str]):
            A list of publicly visible licenses. Reserved
            for Google's use.
        location_hint (str):
            An opaque location hint used to place the
            disk close to other resources. This field is for
            use by internal tools that use the public API.

            This field is a member of `oneof`_ ``_location_hint``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        options (str):
            Internal use only.

            This field is a member of `oneof`_ ``_options``.
        params (google.cloud.compute_v1.types.DiskParams):
            Input only. [Input Only] Additional params passed with the
            request, but not persisted as part of resource payload.

            This field is a member of `oneof`_ ``_params``.
        physical_block_size_bytes (int):
            Physical block size of the persistent disk,
            in bytes. If not present in a request, a default
            value is used. The currently supported size is
            4096, other sizes may be added in the future. If
            an unsupported value is requested, the error
            message will list the supported values for the
            caller's project.

            This field is a member of `oneof`_ ``_physical_block_size_bytes``.
        provisioned_iops (int):
            Indicates how many IOPS to provision for the
            disk. This sets the number of I/O operations per
            second that the disk can handle. Values must be
            between 10,000 and 120,000. For more details,
            see the Extreme persistent disk documentation.

            This field is a member of `oneof`_ ``_provisioned_iops``.
        region (str):
            [Output Only] URL of the region where the disk resides. Only
            applicable for regional resources. You must specify this
            field as part of the HTTP request URL. It is not settable as
            a field in the request body.

            This field is a member of `oneof`_ ``_region``.
        replica_zones (MutableSequence[str]):
            URLs of the zones where the disk should be
            replicated to. Only applicable for regional
            resources.
        resource_policies (MutableSequence[str]):
            Resource policies applied to this disk for
            automatic snapshot creations.
        satisfies_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_satisfies_pzs``.
        self_link (str):
            [Output Only] Server-defined fully-qualified URL for this
            resource.

            This field is a member of `oneof`_ ``_self_link``.
        size_gb (int):
            Size, in GB, of the persistent disk. You can
            specify this field when creating a persistent
            disk using the sourceImage, sourceSnapshot, or
            sourceDisk parameter, or specify it alone to
            create an empty persistent disk. If you specify
            this field along with a source, the value of
            sizeGb must not be less than the size of the
            source. Acceptable values are 1 to 65536,
            inclusive.

            This field is a member of `oneof`_ ``_size_gb``.
        source_disk (str):
            The source disk used to create this disk. You
            can provide this as a partial or full URL to the
            resource. For example, the following are valid
            values: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /disks/disk -
            https://www.googleapis.com/compute/v1/projects/project/regions/region
            /disks/disk -
            projects/project/zones/zone/disks/disk -
            projects/project/regions/region/disks/disk -
            zones/zone/disks/disk -
            regions/region/disks/disk

            This field is a member of `oneof`_ ``_source_disk``.
        source_disk_id (str):
            [Output Only] The unique ID of the disk used to create this
            disk. This value identifies the exact disk that was used to
            create this persistent disk. For example, if you created the
            persistent disk from a disk that was later deleted and
            recreated under the same name, the source disk ID would
            identify the exact version of the disk that was used.

            This field is a member of `oneof`_ ``_source_disk_id``.
        source_image (str):
            The source image used to create this disk. If
            the source image is deleted, this field will not
            be set. To create a disk with one of the public
            operating system images, specify the image by
            its family name. For example, specify
            family/debian-9 to use the latest Debian 9
            image:
            projects/debian-cloud/global/images/family/debian-9
            Alternatively, use a specific version of a
            public operating system image:
            projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD
            To create a disk with a custom image that you
            created, specify the image name in the following
            format: global/images/my-custom-image You can
            also specify a custom image by its image family,
            which returns the latest version of the image in
            that family. Replace the image name with
            family/family-name:
            global/images/family/my-image-family

            This field is a member of `oneof`_ ``_source_image``.
        source_image_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The customer-supplied encryption key of the
            source image. Required if the source image is
            protected by a customer-supplied encryption key.

            This field is a member of `oneof`_ ``_source_image_encryption_key``.
        source_image_id (str):
            [Output Only] The ID value of the image used to create this
            disk. This value identifies the exact image that was used to
            create this persistent disk. For example, if you created the
            persistent disk from an image that was later deleted and
            recreated under the same name, the source image ID would
            identify the exact version of the image that was used.

            This field is a member of `oneof`_ ``_source_image_id``.
        source_snapshot (str):
            The source snapshot used to create this disk.
            You can provide this as a partial or full URL to
            the resource. For example, the following are
            valid values: -
            https://www.googleapis.com/compute/v1/projects/project
            /global/snapshots/snapshot -
            projects/project/global/snapshots/snapshot -
            global/snapshots/snapshot

            This field is a member of `oneof`_ ``_source_snapshot``.
        source_snapshot_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The customer-supplied encryption key of the
            source snapshot. Required if the source snapshot
            is protected by a customer-supplied encryption
            key.

            This field is a member of `oneof`_ ``_source_snapshot_encryption_key``.
        source_snapshot_id (str):
            [Output Only] The unique ID of the snapshot used to create
            this disk. This value identifies the exact snapshot that was
            used to create this persistent disk. For example, if you
            created the persistent disk from a snapshot that was later
            deleted and recreated under the same name, the source
            snapshot ID would identify the exact version of the snapshot
            that was used.

            This field is a member of `oneof`_ ``_source_snapshot_id``.
        source_storage_object (str):
            The full Google Cloud Storage URI where the
            disk image is stored. This file must be a
            gzip-compressed tarball whose name ends in
            .tar.gz or virtual machine disk whose name ends
            in vmdk. Valid URIs may start with gs:// or
            https://storage.googleapis.com/. This flag is
            not optimized for creating multiple disks from a
            source storage object. To create many disks from
            a source storage object, use gcloud compute
            images import instead.

            This field is a member of `oneof`_ ``_source_storage_object``.
        status (str):
            [Output Only] The status of disk creation. - CREATING: Disk
            is provisioning. - RESTORING: Source data is being copied
            into the disk. - FAILED: Disk creation failed. - READY: Disk
            is ready for use. - DELETING: Disk is deleting. Check the
            Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        type_ (str):
            URL of the disk type resource describing
            which disk type to use to create the disk.
            Provide this when creating the disk. For
            example: projects/project
            /zones/zone/diskTypes/pd-ssd . See Persistent
            disk types.

            This field is a member of `oneof`_ ``_type``.
        users (MutableSequence[str]):
            [Output Only] Links to the users of the disk (attached
            instances) in form:
            projects/project/zones/zone/instances/instance
        zone (str):
            [Output Only] URL of the zone where the disk resides. You
            must specify this field as part of the HTTP request URL. It
            is not settable as a field in the request body.

            This field is a member of `oneof`_ ``_zone``.
    """

    class Architecture(proto.Enum):
        r"""The architecture of the disk. Valid values are ARM64 or X86_64.

        Values:
            UNDEFINED_ARCHITECTURE (0):
                A value indicating that the enum field is not
                set.
            ARCHITECTURE_UNSPECIFIED (394750507):
                Default value indicating Architecture is not
                set.
            ARM64 (62547450):
                Machines with architecture ARM64
            X86_64 (425300551):
                Machines with architecture X86_64
        """
        UNDEFINED_ARCHITECTURE = 0
        ARCHITECTURE_UNSPECIFIED = 394750507
        ARM64 = 62547450
        X86_64 = 425300551

    class Status(proto.Enum):
        r"""[Output Only] The status of disk creation. - CREATING: Disk is
        provisioning. - RESTORING: Source data is being copied into the
        disk. - FAILED: Disk creation failed. - READY: Disk is ready for
        use. - DELETING: Disk is deleting.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            CREATING (455564985):
                Disk is provisioning
            DELETING (528602024):
                Disk is deleting.
            FAILED (455706685):
                Disk creation failed.
            READY (77848963):
                Disk is ready for use.
            RESTORING (404263851):
                Source data is being copied into the disk.
        """
        UNDEFINED_STATUS = 0
        CREATING = 455564985
        DELETING = 528602024
        FAILED = 455706685
        READY = 77848963
        RESTORING = 404263851

    architecture: str = proto.Field(
        proto.STRING,
        number=302803283,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    disk_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=271660677,
        optional=True,
        message="CustomerEncryptionKey",
    )
    guest_os_features: MutableSequence["GuestOsFeature"] = proto.RepeatedField(
        proto.MESSAGE,
        number=79294545,
        message="GuestOsFeature",
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    last_attach_timestamp: str = proto.Field(
        proto.STRING,
        number=42159653,
        optional=True,
    )
    last_detach_timestamp: str = proto.Field(
        proto.STRING,
        number=56471027,
        optional=True,
    )
    license_codes: MutableSequence[int] = proto.RepeatedField(
        proto.INT64,
        number=45482664,
    )
    licenses: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=337642578,
    )
    location_hint: str = proto.Field(
        proto.STRING,
        number=350519505,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    options: str = proto.Field(
        proto.STRING,
        number=361137822,
        optional=True,
    )
    params: "DiskParams" = proto.Field(
        proto.MESSAGE,
        number=78313862,
        optional=True,
        message="DiskParams",
    )
    physical_block_size_bytes: int = proto.Field(
        proto.INT64,
        number=420007943,
        optional=True,
    )
    provisioned_iops: int = proto.Field(
        proto.INT64,
        number=186769108,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    replica_zones: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=48438272,
    )
    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )
    satisfies_pzs: bool = proto.Field(
        proto.BOOL,
        number=480964267,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    size_gb: int = proto.Field(
        proto.INT64,
        number=494929369,
        optional=True,
    )
    source_disk: str = proto.Field(
        proto.STRING,
        number=451753793,
        optional=True,
    )
    source_disk_id: str = proto.Field(
        proto.STRING,
        number=454190809,
        optional=True,
    )
    source_image: str = proto.Field(
        proto.STRING,
        number=50443319,
        optional=True,
    )
    source_image_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=381503659,
        optional=True,
        message="CustomerEncryptionKey",
    )
    source_image_id: str = proto.Field(
        proto.STRING,
        number=55328291,
        optional=True,
    )
    source_snapshot: str = proto.Field(
        proto.STRING,
        number=126061928,
        optional=True,
    )
    source_snapshot_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=303679322,
        optional=True,
        message="CustomerEncryptionKey",
    )
    source_snapshot_id: str = proto.Field(
        proto.STRING,
        number=98962258,
        optional=True,
    )
    source_storage_object: str = proto.Field(
        proto.STRING,
        number=233052711,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )
    users: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=111578632,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class DiskAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.DisksScopedList]):
            A list of DisksScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#diskAggregatedList for aggregated lists of
            persistent disks.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "DisksScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="DisksScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class DiskInstantiationConfig(proto.Message):
    r"""A specification of the desired way to instantiate a disk in
    the instance template when its created from a source instance.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_delete (bool):
            Specifies whether the disk will be
            auto-deleted when the instance is deleted (but
            not when the disk is detached from the
            instance).

            This field is a member of `oneof`_ ``_auto_delete``.
        custom_image (str):
            The custom source image to be used to restore
            this disk when instantiating this instance
            template.

            This field is a member of `oneof`_ ``_custom_image``.
        device_name (str):
            Specifies the device name of the disk to
            which the configurations apply to.

            This field is a member of `oneof`_ ``_device_name``.
        instantiate_from (str):
            Specifies whether to include the disk and
            what image to use. Possible values are: -
            source-image: to use the same image that was
            used to create the source instance's
            corresponding disk. Applicable to the boot disk
            and additional read-write disks. -
            source-image-family: to use the same image
            family that was used to create the source
            instance's corresponding disk. Applicable to the
            boot disk and additional read-write disks. -
            custom-image: to use a user-provided image url
            for disk creation. Applicable to the boot disk
            and additional read-write disks. -
            attach-read-only: to attach a read-only disk.
            Applicable to read-only disks. - do-not-include:
            to exclude a disk from the template. Applicable
            to additional read-write disks, local SSDs, and
            read-only disks. Check the InstantiateFrom enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_instantiate_from``.
    """

    class InstantiateFrom(proto.Enum):
        r"""Specifies whether to include the disk and what image to use.
        Possible values are: - source-image: to use the same image that
        was used to create the source instance's corresponding disk.
        Applicable to the boot disk and additional read-write disks. -
        source-image-family: to use the same image family that was used
        to create the source instance's corresponding disk. Applicable
        to the boot disk and additional read-write disks. -
        custom-image: to use a user-provided image url for disk
        creation. Applicable to the boot disk and additional read-write
        disks. - attach-read-only: to attach a read-only disk.
        Applicable to read-only disks. - do-not-include: to exclude a
        disk from the template. Applicable to additional read-write
        disks, local SSDs, and read-only disks.

        Values:
            UNDEFINED_INSTANTIATE_FROM (0):
                A value indicating that the enum field is not
                set.
            ATTACH_READ_ONLY (513775419):
                Attach the existing disk in read-only mode.
                The request will fail if the disk was attached
                in read-write mode on the source instance.
                Applicable to: read-only disks.
            BLANK (63281460):
                Create a blank disk. The disk will be created
                unformatted. Applicable to: additional
                read-write disks, local SSDs.
            CUSTOM_IMAGE (196311789):
                Use the custom image specified in the custom_image field.
                Applicable to: boot disk, additional read-write disks.
            DEFAULT (115302945):
                Use the default instantiation option for the
                corresponding type of disk. For boot disk and
                any other R/W disks, new custom images will be
                created from each disk. For read-only disks,
                they will be attached in read-only mode. Local
                SSD disks will be created as blank volumes.
            DO_NOT_INCLUDE (104218952):
                Do not include the disk in the instance
                template. Applicable to: additional read-write
                disks, local SSDs, read-only disks.
            SOURCE_IMAGE (62631959):
                Use the same source image used for creation
                of the source instance's corresponding disk. The
                request will fail if the source VM's disk was
                created from a snapshot. Applicable to: boot
                disk, additional read-write disks.
            SOURCE_IMAGE_FAMILY (76850316):
                Use the same source image family used for
                creation of the source instance's corresponding
                disk. The request will fail if the source image
                of the source disk does not belong to any image
                family. Applicable to: boot disk, additional
                read-write disks.
        """
        UNDEFINED_INSTANTIATE_FROM = 0
        ATTACH_READ_ONLY = 513775419
        BLANK = 63281460
        CUSTOM_IMAGE = 196311789
        DEFAULT = 115302945
        DO_NOT_INCLUDE = 104218952
        SOURCE_IMAGE = 62631959
        SOURCE_IMAGE_FAMILY = 76850316

    auto_delete: bool = proto.Field(
        proto.BOOL,
        number=464761403,
        optional=True,
    )
    custom_image: str = proto.Field(
        proto.STRING,
        number=184123149,
        optional=True,
    )
    device_name: str = proto.Field(
        proto.STRING,
        number=67541716,
        optional=True,
    )
    instantiate_from: str = proto.Field(
        proto.STRING,
        number=393383903,
        optional=True,
    )


class DiskList(proto.Message):
    r"""A list of Disk resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Disk]):
            A list of Disk resources.
        kind (str):
            [Output Only] Type of resource. Always compute#diskList for
            lists of disks.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Disk"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Disk",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class DiskMoveRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        destination_zone (str):
            The URL of the destination zone to move the
            disk. This can be a full or partial URL. For
            example, the following are all valid URLs to a
            zone: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            - projects/project/zones/zone - zones/zone

            This field is a member of `oneof`_ ``_destination_zone``.
        target_disk (str):
            The URL of the target disk to move. This can
            be a full or partial URL. For example, the
            following are all valid URLs to a disk: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /disks/disk -
            projects/project/zones/zone/disks/disk -
            zones/zone/disks/disk

            This field is a member of `oneof`_ ``_target_disk``.
    """

    destination_zone: str = proto.Field(
        proto.STRING,
        number=131854653,
        optional=True,
    )
    target_disk: str = proto.Field(
        proto.STRING,
        number=62433163,
        optional=True,
    )


class DiskParams(proto.Message):
    r"""Additional disk params.

    Attributes:
        resource_manager_tags (MutableMapping[str, str]):
            Resource manager tags to be bound to the disk. 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.
    """

    resource_manager_tags: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=377671164,
    )


class DiskType(proto.Message):
    r"""Represents a Disk Type resource. Google Compute Engine has two Disk
    Type resources: \*
    `Regional </compute/docs/reference/rest/v1/regionDiskTypes>`__ \*
    `Zonal </compute/docs/reference/rest/v1/diskTypes>`__ You can choose
    from a variety of disk types based on your needs. For more
    information, read Storage options. The diskTypes resource represents
    disk types for a zonal persistent disk. For more information, read
    Zonal persistent disks. The regionDiskTypes resource represents disk
    types for a regional persistent disk. For more information, read
    Regional persistent disks.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        default_disk_size_gb (int):
            [Output Only] Server-defined default disk size in GB.

            This field is a member of `oneof`_ ``_default_disk_size_gb``.
        deprecated (google.cloud.compute_v1.types.DeprecationStatus):
            [Output Only] The deprecation status associated with this
            disk type.

            This field is a member of `oneof`_ ``_deprecated``.
        description (str):
            [Output Only] An optional description of this resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always compute#diskType
            for disk types.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            [Output Only] Name of the resource.

            This field is a member of `oneof`_ ``_name``.
        region (str):
            [Output Only] URL of the region where the disk type resides.
            Only applicable for regional resources. You must specify
            this field as part of the HTTP request URL. It is not
            settable as a field in the request body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        valid_disk_size (str):
            [Output Only] An optional textual description of the valid
            disk size, such as "10GB-10TB".

            This field is a member of `oneof`_ ``_valid_disk_size``.
        zone (str):
            [Output Only] URL of the zone where the disk type resides.
            You must specify this field as part of the HTTP request URL.
            It is not settable as a field in the request body.

            This field is a member of `oneof`_ ``_zone``.
    """

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    default_disk_size_gb: int = proto.Field(
        proto.INT64,
        number=270619253,
        optional=True,
    )
    deprecated: "DeprecationStatus" = proto.Field(
        proto.MESSAGE,
        number=515138995,
        optional=True,
        message="DeprecationStatus",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    valid_disk_size: str = proto.Field(
        proto.STRING,
        number=493962464,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class DiskTypeAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.DiskTypesScopedList]):
            A list of DiskTypesScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#diskTypeAggregatedList.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "DiskTypesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="DiskTypesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class DiskTypeList(proto.Message):
    r"""Contains a list of disk types.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.DiskType]):
            A list of DiskType resources.
        kind (str):
            [Output Only] Type of resource. Always compute#diskTypeList
            for disk types.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["DiskType"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="DiskType",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class DiskTypesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk_types (MutableSequence[google.cloud.compute_v1.types.DiskType]):
            [Output Only] A list of disk types contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of disk types when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    disk_types: MutableSequence["DiskType"] = proto.RepeatedField(
        proto.MESSAGE,
        number=198926167,
        message="DiskType",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class DisksAddResourcePoliciesRequest(proto.Message):
    r"""

    Attributes:
        resource_policies (MutableSequence[str]):
            Full or relative path to the resource policy
            to be added to this disk. You can only specify
            one resource policy.
    """

    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )


class DisksRemoveResourcePoliciesRequest(proto.Message):
    r"""

    Attributes:
        resource_policies (MutableSequence[str]):
            Resource policies to be removed from this
            disk.
    """

    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )


class DisksResizeRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        size_gb (int):
            The new size of the persistent disk, which is
            specified in GB.

            This field is a member of `oneof`_ ``_size_gb``.
    """

    size_gb: int = proto.Field(
        proto.INT64,
        number=494929369,
        optional=True,
    )


class DisksScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disks (MutableSequence[google.cloud.compute_v1.types.Disk]):
            [Output Only] A list of disks contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of disks when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    disks: MutableSequence["Disk"] = proto.RepeatedField(
        proto.MESSAGE,
        number=95594102,
        message="Disk",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class DisplayDevice(proto.Message):
    r"""A set of Display Device options

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enable_display (bool):
            Defines whether the instance has Display
            enabled.

            This field is a member of `oneof`_ ``_enable_display``.
    """

    enable_display: bool = proto.Field(
        proto.BOOL,
        number=14266886,
        optional=True,
    )


class DistributionPolicy(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target_shape (str):
            The distribution shape to which the group
            converges either proactively or on resize events
            (depending on the value set in
            updatePolicy.instanceRedistributionType). Check
            the TargetShape enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_target_shape``.
        zones (MutableSequence[google.cloud.compute_v1.types.DistributionPolicyZoneConfiguration]):
            Zones where the regional managed instance
            group will create and manage its instances.
    """

    class TargetShape(proto.Enum):
        r"""The distribution shape to which the group converges either
        proactively or on resize events (depending on the value set in
        updatePolicy.instanceRedistributionType).

        Values:
            UNDEFINED_TARGET_SHAPE (0):
                A value indicating that the enum field is not
                set.
            ANY (64972):
                The group picks zones for creating VM
                instances to fulfill the requested number of VMs
                within present resource constraints and to
                maximize utilization of unused zonal
                reservations. Recommended for batch workloads
                that do not require high availability.
            BALANCED (468409608):
                The group prioritizes acquisition of
                resources, scheduling VMs in zones where
                resources are available while distributing VMs
                as evenly as possible across selected zones to
                minimize the impact of zonal failure.
                Recommended for highly available serving
                workloads.
            EVEN (2140442):
                The group schedules VM instance creation and
                deletion to achieve and maintain an even number
                of managed instances across the selected zones.
                The distribution is even when the number of
                managed instances does not differ by more than 1
                between any two zones. Recommended for highly
                available serving workloads.
        """
        UNDEFINED_TARGET_SHAPE = 0
        ANY = 64972
        BALANCED = 468409608
        EVEN = 2140442

    target_shape: str = proto.Field(
        proto.STRING,
        number=338621299,
        optional=True,
    )
    zones: MutableSequence["DistributionPolicyZoneConfiguration"] = proto.RepeatedField(
        proto.MESSAGE,
        number=116085319,
        message="DistributionPolicyZoneConfiguration",
    )


class DistributionPolicyZoneConfiguration(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        zone (str):
            The URL of the zone. The zone must exist in
            the region where the managed instance group is
            located.

            This field is a member of `oneof`_ ``_zone``.
    """

    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class Duration(proto.Message):
    r"""A Duration represents a fixed-length span of time represented
    as a count of seconds and fractions of seconds at nanosecond
    resolution. It is independent of any calendar and concepts like
    "day" or "month". Range is approximately 10,000 years.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        nanos (int):
            Span of time that's a fraction of a second at nanosecond
            resolution. Durations less than one second are represented
            with a 0 ``seconds`` field and a positive ``nanos`` field.
            Must be from 0 to 999,999,999 inclusive.

            This field is a member of `oneof`_ ``_nanos``.
        seconds (int):
            Span of time at a resolution of a second. Must be from 0 to
            315,576,000,000 inclusive. Note: these bounds are computed
            from: 60 sec/min \* 60 min/hr \* 24 hr/day \* 365.25
            days/year \* 10000 years

            This field is a member of `oneof`_ ``_seconds``.
    """

    nanos: int = proto.Field(
        proto.INT32,
        number=104586303,
        optional=True,
    )
    seconds: int = proto.Field(
        proto.INT64,
        number=359484031,
        optional=True,
    )


class EnableXpnHostProjectRequest(proto.Message):
    r"""A request message for Projects.EnableXpnHost. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class EnableXpnResourceProjectRequest(proto.Message):
    r"""A request message for Projects.EnableXpnResource. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        projects_enable_xpn_resource_request_resource (google.cloud.compute_v1.types.ProjectsEnableXpnResourceRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    projects_enable_xpn_resource_request_resource: "ProjectsEnableXpnResourceRequest" = proto.Field(
        proto.MESSAGE,
        number=421980207,
        message="ProjectsEnableXpnResourceRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class Error(proto.Message):
    r"""[Output Only] If errors are generated during processing of the
    operation, this field will be populated.

    Attributes:
        errors (MutableSequence[google.cloud.compute_v1.types.Errors]):
            [Output Only] The array of errors encountered while
            processing this operation.
    """

    errors: MutableSequence["Errors"] = proto.RepeatedField(
        proto.MESSAGE,
        number=315977579,
        message="Errors",
    )


class ErrorDetails(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        error_info (google.cloud.compute_v1.types.ErrorInfo):

            This field is a member of `oneof`_ ``_error_info``.
        help_ (google.cloud.compute_v1.types.Help):

            This field is a member of `oneof`_ ``_help``.
        localized_message (google.cloud.compute_v1.types.LocalizedMessage):

            This field is a member of `oneof`_ ``_localized_message``.
        quota_info (google.cloud.compute_v1.types.QuotaExceededInfo):

            This field is a member of `oneof`_ ``_quota_info``.
    """

    error_info: "ErrorInfo" = proto.Field(
        proto.MESSAGE,
        number=25251973,
        optional=True,
        message="ErrorInfo",
    )
    help_: "Help" = proto.Field(
        proto.MESSAGE,
        number=3198785,
        optional=True,
        message="Help",
    )
    localized_message: "LocalizedMessage" = proto.Field(
        proto.MESSAGE,
        number=404537155,
        optional=True,
        message="LocalizedMessage",
    )
    quota_info: "QuotaExceededInfo" = proto.Field(
        proto.MESSAGE,
        number=93923861,
        optional=True,
        message="QuotaExceededInfo",
    )


class ErrorInfo(proto.Message):
    r"""Describes the cause of the error with structured details. Example of
    an error when contacting the "pubsub.googleapis.com" API when it is
    not enabled: { "reason": "API_DISABLED" "domain": "googleapis.com"
    "metadata": { "resource": "projects/123", "service":
    "pubsub.googleapis.com" } } This response indicates that the
    pubsub.googleapis.com API is not enabled. Example of an error that
    is returned when attempting to create a Spanner instance in a region
    that is out of stock: { "reason": "STOCKOUT" "domain":
    "spanner.googleapis.com", "metadata": { "availableRegions":
    "us-central1,us-east2" } }


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        domain (str):
            The logical grouping to which the "reason"
            belongs. The error domain is typically the
            registered service name of the tool or product
            that generates the error. Example:
            "pubsub.googleapis.com". If the error is
            generated by some common infrastructure, the
            error domain must be a globally unique value
            that identifies the infrastructure. For Google
            API infrastructure, the error domain is
            "googleapis.com".

            This field is a member of `oneof`_ ``_domain``.
        metadatas (MutableMapping[str, str]):
            Additional structured details about this error. Keys should
            match `[a-zA-Z0-9-_]` and be limited to 64 characters in
            length. When identifying the current value of an exceeded
            limit, the units should be contained in the key, not the
            value. For example, rather than {"instanceLimit":
            "100/request"}, should be returned as,
            {"instanceLimitPerRequest": "100"}, if the client exceeds
            the number of instances that can be created in a single
            (batch) request.
        reason (str):
            The reason of the error. This is a constant value that
            identifies the proximate cause of the error. Error reasons
            are unique within a particular domain of errors. This should
            be at most 63 characters and match a regular expression of
            ``A-Z+[A-Z0-9]``, which represents UPPER_SNAKE_CASE.

            This field is a member of `oneof`_ ``_reason``.
    """

    domain: str = proto.Field(
        proto.STRING,
        number=284415172,
        optional=True,
    )
    metadatas: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=8514340,
    )
    reason: str = proto.Field(
        proto.STRING,
        number=138777156,
        optional=True,
    )


class Errors(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        code (str):
            [Output Only] The error type identifier for this error.

            This field is a member of `oneof`_ ``_code``.
        error_details (MutableSequence[google.cloud.compute_v1.types.ErrorDetails]):
            [Output Only] An optional list of messages that contain the
            error details. There is a set of defined message types to
            use for providing details.The syntax depends on the error
            code. For example, QuotaExceededInfo will have details when
            the error code is QUOTA_EXCEEDED.
        location (str):
            [Output Only] Indicates the field in the request that caused
            the error. This property is optional.

            This field is a member of `oneof`_ ``_location``.
        message (str):
            [Output Only] An optional, human-readable error message.

            This field is a member of `oneof`_ ``_message``.
    """

    code: str = proto.Field(
        proto.STRING,
        number=3059181,
        optional=True,
    )
    error_details: MutableSequence["ErrorDetails"] = proto.RepeatedField(
        proto.MESSAGE,
        number=274653963,
        message="ErrorDetails",
    )
    location: str = proto.Field(
        proto.STRING,
        number=290430901,
        optional=True,
    )
    message: str = proto.Field(
        proto.STRING,
        number=418054151,
        optional=True,
    )


class ExchangedPeeringRoute(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        dest_range (str):
            The destination range of the route.

            This field is a member of `oneof`_ ``_dest_range``.
        imported (bool):
            True if the peering route has been imported
            from a peer. The actual import happens if the
            field networkPeering.importCustomRoutes is true
            for this network, and
            networkPeering.exportCustomRoutes is true for
            the peer network, and the import does not result
            in a route conflict.

            This field is a member of `oneof`_ ``_imported``.
        next_hop_region (str):
            The region of peering route next hop, only
            applies to dynamic routes.

            This field is a member of `oneof`_ ``_next_hop_region``.
        priority (int):
            The priority of the peering route.

            This field is a member of `oneof`_ ``_priority``.
        type_ (str):
            The type of the peering route.
            Check the Type enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""The type of the peering route.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            DYNAMIC_PEERING_ROUTE (469794858):
                For routes exported from local network.
            STATIC_PEERING_ROUTE (473407545):
                The peering route.
            SUBNET_PEERING_ROUTE (465782504):
                The peering route corresponding to subnetwork
                range.
        """
        UNDEFINED_TYPE = 0
        DYNAMIC_PEERING_ROUTE = 469794858
        STATIC_PEERING_ROUTE = 473407545
        SUBNET_PEERING_ROUTE = 465782504

    dest_range: str = proto.Field(
        proto.STRING,
        number=381327712,
        optional=True,
    )
    imported: bool = proto.Field(
        proto.BOOL,
        number=114502404,
        optional=True,
    )
    next_hop_region: str = proto.Field(
        proto.STRING,
        number=122577014,
        optional=True,
    )
    priority: int = proto.Field(
        proto.UINT32,
        number=445151652,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class ExchangedPeeringRoutesList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.ExchangedPeeringRoute]):
            A list of ExchangedPeeringRoute resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#exchangedPeeringRoutesList for exchanged peering
            routes lists.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["ExchangedPeeringRoute"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="ExchangedPeeringRoute",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ExpandIpCidrRangeSubnetworkRequest(proto.Message):
    r"""A request message for Subnetworks.ExpandIpCidrRange. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        subnetwork (str):
            Name of the Subnetwork resource to update.
        subnetworks_expand_ip_cidr_range_request_resource (google.cloud.compute_v1.types.SubnetworksExpandIpCidrRangeRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
    )
    subnetworks_expand_ip_cidr_range_request_resource: "SubnetworksExpandIpCidrRangeRequest" = proto.Field(
        proto.MESSAGE,
        number=477014110,
        message="SubnetworksExpandIpCidrRangeRequest",
    )


class Expr(proto.Message):
    r"""Represents a textual expression in the Common Expression Language
    (CEL) syntax. CEL is a C-like expression language. The syntax and
    semantics of CEL are documented at
    https://github.com/google/cel-spec. Example (Comparison): title:
    "Summary size limit" description: "Determines if a summary is less
    than 100 chars" expression: "document.summary.size() < 100" Example
    (Equality): title: "Requestor is owner" description: "Determines if
    requestor is the document owner" expression: "document.owner ==
    request.auth.claims.email" Example (Logic): title: "Public
    documents" description: "Determine whether the document should be
    publicly visible" expression: "document.type != 'private' &&
    document.type != 'internal'" Example (Data Manipulation): title:
    "Notification string" description: "Create a notification string
    with a timestamp." expression: "'New message received at ' +
    string(document.create_time)" The exact variables and functions that
    may be referenced within an expression are determined by the service
    that evaluates it. See the service documentation for additional
    information.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        description (str):
            Optional. Description of the expression. This
            is a longer text which describes the expression,
            e.g. when hovered over it in a UI.

            This field is a member of `oneof`_ ``_description``.
        expression (str):
            Textual representation of an expression in
            Common Expression Language syntax.

            This field is a member of `oneof`_ ``_expression``.
        location (str):
            Optional. String indicating the location of
            the expression for error reporting, e.g. a file
            name and a position in the file.

            This field is a member of `oneof`_ ``_location``.
        title (str):
            Optional. Title for the expression, i.e. a
            short string describing its purpose. This can be
            used e.g. in UIs which allow to enter the
            expression.

            This field is a member of `oneof`_ ``_title``.
    """

    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    expression: str = proto.Field(
        proto.STRING,
        number=352031384,
        optional=True,
    )
    location: str = proto.Field(
        proto.STRING,
        number=290430901,
        optional=True,
    )
    title: str = proto.Field(
        proto.STRING,
        number=110371416,
        optional=True,
    )


class ExternalVpnGateway(proto.Message):
    r"""Represents an external VPN gateway. External VPN gateway is
    the on-premises VPN gateway(s) or another cloud provider's VPN
    gateway that connects to your Google Cloud VPN gateway. To
    create a highly available VPN from Google Cloud Platform to your
    VPN gateway or another cloud provider's VPN gateway, you must
    create a external VPN gateway resource with information about
    the other gateway. For more information about using external VPN
    gateways, see Creating an HA VPN gateway and tunnel pair to a
    peer VPN.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        interfaces (MutableSequence[google.cloud.compute_v1.types.ExternalVpnGatewayInterface]):
            A list of interfaces for this external VPN
            gateway. If your peer-side gateway is an
            on-premises gateway and non-AWS cloud providers'
            gateway, at most two interfaces can be provided
            for an external VPN gateway. If your peer side
            is an AWS virtual private gateway, four
            interfaces should be provided for an external
            VPN gateway.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#externalVpnGateway for externalVpnGateways.

            This field is a member of `oneof`_ ``_kind``.
        label_fingerprint (str):
            A fingerprint for the labels being applied to
            this ExternalVpnGateway, which is essentially a
            hash of the labels set used for optimistic
            locking. The fingerprint is initially generated
            by Compute Engine and changes after every
            request to modify or update labels. You must
            always provide an up-to-date fingerprint hash in
            order to update or change labels, otherwise the
            request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve an
            ExternalVpnGateway.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            Labels for this resource. These can only be
            added or modified by the setLabels method. Each
            label key/value pair must comply with RFC1035.
            Label values may be empty.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        redundancy_type (str):
            Indicates the user-supplied redundancy type
            of this external VPN gateway. Check the
            RedundancyType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_redundancy_type``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
    """

    class RedundancyType(proto.Enum):
        r"""Indicates the user-supplied redundancy type of this external
        VPN gateway.

        Values:
            UNDEFINED_REDUNDANCY_TYPE (0):
                A value indicating that the enum field is not
                set.
            FOUR_IPS_REDUNDANCY (520087913):
                The external VPN gateway has four public IP addresses; at
                the time of writing this API, the AWS virtual private
                gateway is an example which has four public IP addresses for
                high availability connections; there should be two VPN
                connections in the AWS virtual private gateway , each AWS
                VPN connection has two public IP addresses; please make sure
                to put two public IP addresses from one AWS VPN connection
                into interfaces 0 and 1 of this external VPN gateway, and
                put the other two public IP addresses from another AWS VPN
                connection into interfaces 2 and 3 of this external VPN
                gateway. When displaying highly available configuration
                status for the VPN tunnels connected to FOUR_IPS_REDUNDANCY
                external VPN gateway, Google will always detect whether
                interfaces 0 and 1 are connected on one interface of HA
                Cloud VPN gateway, and detect whether interfaces 2 and 3 are
                connected to another interface of the HA Cloud VPN gateway.
            SINGLE_IP_INTERNALLY_REDUNDANT (133914873):
                The external VPN gateway has only one public
                IP address which internally provide redundancy
                or failover.
            TWO_IPS_REDUNDANCY (367049635):
                The external VPN gateway has two public IP
                addresses which are redundant with each other,
                the following two types of setup on your
                on-premises side would have this type of
                redundancy: (1) Two separate on-premises
                gateways, each with one public IP address, the
                two on-premises gateways are redundant with each
                other. (2) A single on-premise gateway with two
                public IP addresses that are redundant with
                eatch other.
        """
        UNDEFINED_REDUNDANCY_TYPE = 0
        FOUR_IPS_REDUNDANCY = 520087913
        SINGLE_IP_INTERNALLY_REDUNDANT = 133914873
        TWO_IPS_REDUNDANCY = 367049635

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    interfaces: MutableSequence["ExternalVpnGatewayInterface"] = proto.RepeatedField(
        proto.MESSAGE,
        number=12073562,
        message="ExternalVpnGatewayInterface",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    redundancy_type: str = proto.Field(
        proto.STRING,
        number=271443740,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )


class ExternalVpnGatewayInterface(proto.Message):
    r"""The interface for the external VPN gateway.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (int):
            The numeric ID of this interface. The allowed input values
            for this id for different redundancy types of external VPN
            gateway: - SINGLE_IP_INTERNALLY_REDUNDANT - 0 -
            TWO_IPS_REDUNDANCY - 0, 1 - FOUR_IPS_REDUNDANCY - 0, 1, 2, 3

            This field is a member of `oneof`_ ``_id``.
        ip_address (str):
            IP address of the interface in the external
            VPN gateway. Only IPv4 is supported. This IP
            address can be either from your on-premise
            gateway or another Cloud provider's VPN gateway,
            it cannot be an IP address from Google Compute
            Engine.

            This field is a member of `oneof`_ ``_ip_address``.
    """

    id: int = proto.Field(
        proto.UINT32,
        number=3355,
        optional=True,
    )
    ip_address: str = proto.Field(
        proto.STRING,
        number=406272220,
        optional=True,
    )


class ExternalVpnGatewayList(proto.Message):
    r"""Response to the list request, and contains a list of
    externalVpnGateways.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        etag (str):

            This field is a member of `oneof`_ ``_etag``.
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.ExternalVpnGateway]):
            A list of ExternalVpnGateway resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#externalVpnGatewayList for lists of
            externalVpnGateways.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["ExternalVpnGateway"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="ExternalVpnGateway",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class FileContentBuffer(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        content (str):
            The raw content in the secure keys file.

            This field is a member of `oneof`_ ``_content``.
        file_type (str):
            The file type of source file.
            Check the FileType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_file_type``.
    """

    class FileType(proto.Enum):
        r"""The file type of source file.

        Values:
            UNDEFINED_FILE_TYPE (0):
                A value indicating that the enum field is not
                set.
            BIN (65767):
                No description available.
            UNDEFINED (137851184):
                No description available.
            X509 (2674086):
                No description available.
        """
        UNDEFINED_FILE_TYPE = 0
        BIN = 65767
        UNDEFINED = 137851184
        X509 = 2674086

    content: str = proto.Field(
        proto.STRING,
        number=414659705,
        optional=True,
    )
    file_type: str = proto.Field(
        proto.STRING,
        number=294346781,
        optional=True,
    )


class Firewall(proto.Message):
    r"""Represents a Firewall Rule resource. Firewall rules allow or
    deny ingress traffic to, and egress traffic from your instances.
    For more information, read Firewall rules.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        allowed (MutableSequence[google.cloud.compute_v1.types.Allowed]):
            The list of ALLOW rules specified by this
            firewall. Each rule specifies a protocol and
            port-range tuple that describes a permitted
            connection.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        denied (MutableSequence[google.cloud.compute_v1.types.Denied]):
            The list of DENY rules specified by this
            firewall. Each rule specifies a protocol and
            port-range tuple that describes a denied
            connection.
        description (str):
            An optional description of this resource.
            Provide this field when you create the resource.

            This field is a member of `oneof`_ ``_description``.
        destination_ranges (MutableSequence[str]):
            If destination ranges are specified, the
            firewall rule applies only to traffic that has
            destination IP address in these ranges. These
            ranges must be expressed in CIDR format. Both
            IPv4 and IPv6 are supported.
        direction (str):
            Direction of traffic to which this firewall applies, either
            ``INGRESS`` or ``EGRESS``. The default is ``INGRESS``. For
            ``EGRESS`` traffic, you cannot specify the sourceTags
            fields. Check the Direction enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_direction``.
        disabled (bool):
            Denotes whether the firewall rule is
            disabled. When set to true, the firewall rule is
            not enforced and the network behaves as if it
            did not exist. If this is unspecified, the
            firewall rule will be enabled.

            This field is a member of `oneof`_ ``_disabled``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always compute#firewall
            for firewall rules.

            This field is a member of `oneof`_ ``_kind``.
        log_config (google.cloud.compute_v1.types.FirewallLogConfig):
            This field denotes the logging options for a
            particular firewall rule. If logging is enabled,
            logs will be exported to Cloud Logging.

            This field is a member of `oneof`_ ``_log_config``.
        name (str):
            Name of the resource; provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?``. The first character must be
            a lowercase letter, and all following characters (except for
            the last character) must be a dash, lowercase letter, or
            digit. The last character must be a lowercase letter or
            digit.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            URL of the network resource for this firewall
            rule. If not specified when creating a firewall
            rule, the default network is used:
            global/networks/default If you choose to specify
            this field, you can specify the network as a
            full or partial URL. For example, the following
            are all valid URLs: -
            https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network
            - projects/myproject/global/networks/my-network
            - global/networks/default

            This field is a member of `oneof`_ ``_network``.
        priority (int):
            Priority for this rule. This is an integer between ``0`` and
            ``65535``, both inclusive. The default value is ``1000``.
            Relative priorities determine which rule takes effect if
            multiple rules apply. Lower values indicate higher priority.
            For example, a rule with priority ``0`` has higher
            precedence than a rule with priority ``1``. DENY rules take
            precedence over ALLOW rules if they have equal priority.
            Note that VPC networks have implied rules with a priority of
            ``65535``. To avoid conflicts with the implied rules, use a
            priority number less than ``65535``.

            This field is a member of `oneof`_ ``_priority``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        source_ranges (MutableSequence[str]):
            If source ranges are specified, the firewall
            rule applies only to traffic that has a source
            IP address in these ranges. These ranges must be
            expressed in CIDR format. One or both of
            sourceRanges and sourceTags may be set. If both
            fields are set, the rule applies to traffic that
            has a source IP address within sourceRanges OR a
            source IP from a resource with a matching tag
            listed in the sourceTags field. The connection
            does not need to match both fields for the rule
            to apply. Both IPv4 and IPv6 are supported.
        source_service_accounts (MutableSequence[str]):
            If source service accounts are specified, the
            firewall rules apply only to traffic originating
            from an instance with a service account in this
            list. Source service accounts cannot be used to
            control traffic to an instance's external IP
            address because service accounts are associated
            with an instance, not an IP address.
            sourceRanges can be set at the same time as
            sourceServiceAccounts. If both are set, the
            firewall applies to traffic that has a source IP
            address within the sourceRanges OR a source IP
            that belongs to an instance with service account
            listed in sourceServiceAccount. The connection
            does not need to match both fields for the
            firewall to apply. sourceServiceAccounts cannot
            be used at the same time as sourceTags or
            targetTags.
        source_tags (MutableSequence[str]):
            If source tags are specified, the firewall
            rule applies only to traffic with source IPs
            that match the primary network interfaces of VM
            instances that have the tag and are in the same
            VPC network. Source tags cannot be used to
            control traffic to an instance's external IP
            address, it only applies to traffic between
            instances in the same virtual network. Because
            tags are associated with instances, not IP
            addresses. One or both of sourceRanges and
            sourceTags may be set. If both fields are set,
            the firewall applies to traffic that has a
            source IP address within sourceRanges OR a
            source IP from a resource with a matching tag
            listed in the sourceTags field. The connection
            does not need to match both fields for the
            firewall to apply.
        target_service_accounts (MutableSequence[str]):
            A list of service accounts indicating sets of instances
            located in the network that may make network connections as
            specified in allowed[]. targetServiceAccounts cannot be used
            at the same time as targetTags or sourceTags. If neither
            targetServiceAccounts nor targetTags are specified, the
            firewall rule applies to all instances on the specified
            network.
        target_tags (MutableSequence[str]):
            A list of tags that controls which instances
            the firewall rule applies to. If targetTags are
            specified, then the firewall rule applies only
            to instances in the VPC network that have one of
            those tags. If no targetTags are specified, the
            firewall rule applies to all instances on the
            specified network.
    """

    class Direction(proto.Enum):
        r"""Direction of traffic to which this firewall applies, either
        ``INGRESS`` or ``EGRESS``. The default is ``INGRESS``. For
        ``EGRESS`` traffic, you cannot specify the sourceTags fields.

        Values:
            UNDEFINED_DIRECTION (0):
                A value indicating that the enum field is not
                set.
            EGRESS (432880501):
                Indicates that firewall should apply to
                outgoing traffic.
            INGRESS (516931221):
                Indicates that firewall should apply to
                incoming traffic.
        """
        UNDEFINED_DIRECTION = 0
        EGRESS = 432880501
        INGRESS = 516931221

    allowed: MutableSequence["Allowed"] = proto.RepeatedField(
        proto.MESSAGE,
        number=162398632,
        message="Allowed",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    denied: MutableSequence["Denied"] = proto.RepeatedField(
        proto.MESSAGE,
        number=275217307,
        message="Denied",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    destination_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=305699879,
    )
    direction: str = proto.Field(
        proto.STRING,
        number=111150975,
        optional=True,
    )
    disabled: bool = proto.Field(
        proto.BOOL,
        number=270940796,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    log_config: "FirewallLogConfig" = proto.Field(
        proto.MESSAGE,
        number=351299741,
        optional=True,
        message="FirewallLogConfig",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    source_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=200097658,
    )
    source_service_accounts: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=105100756,
    )
    source_tags: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=452222397,
    )
    target_service_accounts: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=457639710,
    )
    target_tags: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=62901767,
    )


class FirewallList(proto.Message):
    r"""Contains a list of firewalls.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Firewall]):
            A list of Firewall resources.
        kind (str):
            [Output Only] Type of resource. Always compute#firewallList
            for lists of firewalls.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Firewall"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Firewall",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class FirewallLogConfig(proto.Message):
    r"""The available logging options for a firewall rule.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enable (bool):
            This field denotes whether to enable logging
            for a particular firewall rule.

            This field is a member of `oneof`_ ``_enable``.
        metadata (str):
            This field can only be specified for a
            particular firewall rule if logging is enabled
            for that rule. This field denotes whether to
            include or exclude metadata for firewall logs.
            Check the Metadata enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_metadata``.
    """

    class Metadata(proto.Enum):
        r"""This field can only be specified for a particular firewall
        rule if logging is enabled for that rule. This field denotes
        whether to include or exclude metadata for firewall logs.

        Values:
            UNDEFINED_METADATA (0):
                A value indicating that the enum field is not
                set.
            EXCLUDE_ALL_METADATA (334519954):
                No description available.
            INCLUDE_ALL_METADATA (164619908):
                No description available.
        """
        UNDEFINED_METADATA = 0
        EXCLUDE_ALL_METADATA = 334519954
        INCLUDE_ALL_METADATA = 164619908

    enable: bool = proto.Field(
        proto.BOOL,
        number=311764355,
        optional=True,
    )
    metadata: str = proto.Field(
        proto.STRING,
        number=86866735,
        optional=True,
    )


class FirewallPoliciesListAssociationsResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        associations (MutableSequence[google.cloud.compute_v1.types.FirewallPolicyAssociation]):
            A list of associations.
        kind (str):
            [Output Only] Type of firewallPolicy associations. Always
            compute#FirewallPoliciesListAssociations for lists of
            firewallPolicy associations.

            This field is a member of `oneof`_ ``_kind``.
    """

    associations: MutableSequence["FirewallPolicyAssociation"] = proto.RepeatedField(
        proto.MESSAGE,
        number=508736530,
        message="FirewallPolicyAssociation",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )


class FirewallPolicy(proto.Message):
    r"""Represents a Firewall Policy resource.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        associations (MutableSequence[google.cloud.compute_v1.types.FirewallPolicyAssociation]):
            A list of associations that belong to this
            firewall policy.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        display_name (str):
            Deprecated, please use short name instead. User-provided
            name of the Organization firewall policy. The name should be
            unique in the organization in which the firewall policy is
            created. This field is not applicable to network firewall
            policies. This name must be set on creation and cannot be
            changed. The name must be 1-63 characters long, and comply
            with RFC1035. Specifically, the name must be 1-63 characters
            long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_display_name``.
        fingerprint (str):
            Specifies a fingerprint for this resource,
            which is essentially a hash of the metadata's
            contents and used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update metadata. You must always provide an
            up-to-date fingerprint hash in order to update
            or change metadata, otherwise the request will
            fail with error 412 conditionNotMet. To see the
            latest fingerprint, make get() request to the
            firewall policy.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output only] Type of the resource. Always
            compute#firewallPolicyfor firewall policies

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. For Organization Firewall Policies
            it's a [Output Only] numeric ID allocated by Google Cloud
            which uniquely identifies the Organization Firewall Policy.

            This field is a member of `oneof`_ ``_name``.
        parent (str):
            [Output Only] The parent of the firewall policy. This field
            is not applicable to network firewall policies.

            This field is a member of `oneof`_ ``_parent``.
        region (str):
            [Output Only] URL of the region where the regional firewall
            policy resides. This field is not applicable to global
            firewall policies. You must specify this field as part of
            the HTTP request URL. It is not settable as a field in the
            request body.

            This field is a member of `oneof`_ ``_region``.
        rule_tuple_count (int):
            [Output Only] Total count of all firewall policy rule
            tuples. A firewall policy can not exceed a set number of
            tuples.

            This field is a member of `oneof`_ ``_rule_tuple_count``.
        rules (MutableSequence[google.cloud.compute_v1.types.FirewallPolicyRule]):
            A list of rules that belong to this policy. There must
            always be a default rule (rule with priority 2147483647 and
            match "*"). If no rules are provided when creating a
            firewall policy, a default rule with action "allow" will be
            added.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        self_link_with_id (str):
            [Output Only] Server-defined URL for this resource with the
            resource id.

            This field is a member of `oneof`_ ``_self_link_with_id``.
        short_name (str):
            User-provided name of the Organization firewall policy. The
            name should be unique in the organization in which the
            firewall policy is created. This field is not applicable to
            network firewall policies. This name must be set on creation
            and cannot be changed. The name must be 1-63 characters
            long, and comply with RFC1035. Specifically, the name must
            be 1-63 characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_short_name``.
    """

    associations: MutableSequence["FirewallPolicyAssociation"] = proto.RepeatedField(
        proto.MESSAGE,
        number=508736530,
        message="FirewallPolicyAssociation",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    display_name: str = proto.Field(
        proto.STRING,
        number=4473832,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    parent: str = proto.Field(
        proto.STRING,
        number=78317738,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    rule_tuple_count: int = proto.Field(
        proto.INT32,
        number=388342037,
        optional=True,
    )
    rules: MutableSequence["FirewallPolicyRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=108873975,
        message="FirewallPolicyRule",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    self_link_with_id: str = proto.Field(
        proto.STRING,
        number=44520962,
        optional=True,
    )
    short_name: str = proto.Field(
        proto.STRING,
        number=492051566,
        optional=True,
    )


class FirewallPolicyAssociation(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        attachment_target (str):
            The target that the firewall policy is
            attached to.

            This field is a member of `oneof`_ ``_attachment_target``.
        display_name (str):
            [Output Only] Deprecated, please use short name instead. The
            display name of the firewall policy of the association.

            This field is a member of `oneof`_ ``_display_name``.
        firewall_policy_id (str):
            [Output Only] The firewall policy ID of the association.

            This field is a member of `oneof`_ ``_firewall_policy_id``.
        name (str):
            The name for an association.

            This field is a member of `oneof`_ ``_name``.
        short_name (str):
            [Output Only] The short name of the firewall policy of the
            association.

            This field is a member of `oneof`_ ``_short_name``.
    """

    attachment_target: str = proto.Field(
        proto.STRING,
        number=175773741,
        optional=True,
    )
    display_name: str = proto.Field(
        proto.STRING,
        number=4473832,
        optional=True,
    )
    firewall_policy_id: str = proto.Field(
        proto.STRING,
        number=357211849,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    short_name: str = proto.Field(
        proto.STRING,
        number=492051566,
        optional=True,
    )


class FirewallPolicyList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.FirewallPolicy]):
            A list of FirewallPolicy resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#firewallPolicyList for listsof FirewallPolicies

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["FirewallPolicy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="FirewallPolicy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class FirewallPolicyRule(proto.Message):
    r"""Represents a rule that describes one or more match conditions
    along with the action to be taken when traffic matches this
    condition (allow or deny).


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        action (str):
            The Action to perform when the client connection triggers
            the rule. Valid actions are "allow", "deny" and "goto_next".

            This field is a member of `oneof`_ ``_action``.
        description (str):
            An optional description for this resource.

            This field is a member of `oneof`_ ``_description``.
        direction (str):
            The direction in which this rule applies.
            Check the Direction enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_direction``.
        disabled (bool):
            Denotes whether the firewall policy rule is
            disabled. When set to true, the firewall policy
            rule is not enforced and traffic behaves as if
            it did not exist. If this is unspecified, the
            firewall policy rule will be enabled.

            This field is a member of `oneof`_ ``_disabled``.
        enable_logging (bool):
            Denotes whether to enable logging for a particular rule. If
            logging is enabled, logs will be exported to the configured
            export destination in Stackdriver. Logs may be exported to
            BigQuery or Pub/Sub. Note: you cannot enable logging on
            "goto_next" rules.

            This field is a member of `oneof`_ ``_enable_logging``.
        kind (str):
            [Output only] Type of the resource. Always
            compute#firewallPolicyRule for firewall policy rules

            This field is a member of `oneof`_ ``_kind``.
        match (google.cloud.compute_v1.types.FirewallPolicyRuleMatcher):
            A match condition that incoming traffic is
            evaluated against. If it evaluates to true, the
            corresponding 'action' is enforced.

            This field is a member of `oneof`_ ``_match``.
        priority (int):
            An integer indicating the priority of a rule
            in the list. The priority must be a positive
            value between 0 and 2147483647. Rules are
            evaluated from highest to lowest priority where
            0 is the highest priority and 2147483647 is the
            lowest prority.

            This field is a member of `oneof`_ ``_priority``.
        rule_name (str):
            An optional name for the rule. This field is
            not a unique identifier and can be updated.

            This field is a member of `oneof`_ ``_rule_name``.
        rule_tuple_count (int):
            [Output Only] Calculation of the complexity of a single
            firewall policy rule.

            This field is a member of `oneof`_ ``_rule_tuple_count``.
        target_resources (MutableSequence[str]):
            A list of network resource URLs to which this
            rule applies. This field allows you to control
            which network's VMs get this rule. If this field
            is left blank, all VMs within the organization
            will receive the rule.
        target_secure_tags (MutableSequence[google.cloud.compute_v1.types.FirewallPolicyRuleSecureTag]):
            A list of secure tags that controls which instances the
            firewall rule applies to. If targetSecureTag are specified,
            then the firewall rule applies only to instances in the VPC
            network that have one of those EFFECTIVE secure tags, if all
            the target_secure_tag are in INEFFECTIVE state, then this
            rule will be ignored. targetSecureTag may not be set at the
            same time as targetServiceAccounts. If neither
            targetServiceAccounts nor targetSecureTag are specified, the
            firewall rule applies to all instances on the specified
            network. Maximum number of target label tags allowed is 256.
        target_service_accounts (MutableSequence[str]):
            A list of service accounts indicating the
            sets of instances that are applied with this
            rule.
    """

    class Direction(proto.Enum):
        r"""The direction in which this rule applies.

        Values:
            UNDEFINED_DIRECTION (0):
                A value indicating that the enum field is not
                set.
            EGRESS (432880501):
                No description available.
            INGRESS (516931221):
                No description available.
        """
        UNDEFINED_DIRECTION = 0
        EGRESS = 432880501
        INGRESS = 516931221

    action: str = proto.Field(
        proto.STRING,
        number=187661878,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    direction: str = proto.Field(
        proto.STRING,
        number=111150975,
        optional=True,
    )
    disabled: bool = proto.Field(
        proto.BOOL,
        number=270940796,
        optional=True,
    )
    enable_logging: bool = proto.Field(
        proto.BOOL,
        number=295396515,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    match: "FirewallPolicyRuleMatcher" = proto.Field(
        proto.MESSAGE,
        number=103668165,
        optional=True,
        message="FirewallPolicyRuleMatcher",
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    rule_name: str = proto.Field(
        proto.STRING,
        number=55286254,
        optional=True,
    )
    rule_tuple_count: int = proto.Field(
        proto.INT32,
        number=388342037,
        optional=True,
    )
    target_resources: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=528230647,
    )
    target_secure_tags: MutableSequence[
        "FirewallPolicyRuleSecureTag"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=468132403,
        message="FirewallPolicyRuleSecureTag",
    )
    target_service_accounts: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=457639710,
    )


class FirewallPolicyRuleMatcher(proto.Message):
    r"""Represents a match condition that incoming traffic is
    evaluated against. Exactly one field must be specified.

    Attributes:
        dest_ip_ranges (MutableSequence[str]):
            CIDR IP address range. Maximum number of
            destination CIDR IP ranges allowed is 5000.
        layer4_configs (MutableSequence[google.cloud.compute_v1.types.FirewallPolicyRuleMatcherLayer4Config]):
            Pairs of IP protocols and ports that the rule
            should match.
        src_ip_ranges (MutableSequence[str]):
            CIDR IP address range. Maximum number of
            source CIDR IP ranges allowed is 5000.
        src_secure_tags (MutableSequence[google.cloud.compute_v1.types.FirewallPolicyRuleSecureTag]):
            List of secure tag values, which should be
            matched at the source of the traffic. For
            INGRESS rule, if all the srcSecureTag are
            INEFFECTIVE, and there is no srcIpRange, this
            rule will be ignored. Maximum number of source
            tag values allowed is 256.
    """

    dest_ip_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=337357713,
    )
    layer4_configs: MutableSequence[
        "FirewallPolicyRuleMatcherLayer4Config"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=373534261,
        message="FirewallPolicyRuleMatcherLayer4Config",
    )
    src_ip_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=432128083,
    )
    src_secure_tags: MutableSequence[
        "FirewallPolicyRuleSecureTag"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=508791302,
        message="FirewallPolicyRuleSecureTag",
    )


class FirewallPolicyRuleMatcherLayer4Config(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ip_protocol (str):
            The IP protocol to which this rule applies.
            The protocol type is required when creating a
            firewall rule. This value can either be one of
            the following well known protocol strings (tcp,
            udp, icmp, esp, ah, ipip, sctp), or the IP
            protocol number.

            This field is a member of `oneof`_ ``_ip_protocol``.
        ports (MutableSequence[str]):
            An optional list of ports to which this rule applies. This
            field is only applicable for UDP or TCP protocol. Each entry
            must be either an integer or a range. If not specified, this
            rule applies to connections through any port. Example inputs
            include: ["22"], ["80","443"], and ["12345-12349"].
    """

    ip_protocol: str = proto.Field(
        proto.STRING,
        number=475958960,
        optional=True,
    )
    ports: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=106854418,
    )


class FirewallPolicyRuleSecureTag(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            Name of the secure tag, created with
            TagManager's TagValue API.

            This field is a member of `oneof`_ ``_name``.
        state (str):
            [Output Only] State of the secure tag, either ``EFFECTIVE``
            or ``INEFFECTIVE``. A secure tag is ``INEFFECTIVE`` when it
            is deleted or its network is deleted. Check the State enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_state``.
    """

    class State(proto.Enum):
        r"""[Output Only] State of the secure tag, either ``EFFECTIVE`` or
        ``INEFFECTIVE``. A secure tag is ``INEFFECTIVE`` when it is deleted
        or its network is deleted.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            EFFECTIVE (244201863):
                No description available.
            INEFFECTIVE (304458242):
                No description available.
        """
        UNDEFINED_STATE = 0
        EFFECTIVE = 244201863
        INEFFECTIVE = 304458242

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )


class FixedOrPercent(proto.Message):
    r"""Encapsulates numeric value that can be either absolute or
    relative.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        calculated (int):
            [Output Only] Absolute value of VM instances calculated
            based on the specific mode. - If the value is fixed, then
            the calculated value is equal to the fixed value. - If the
            value is a percent, then the calculated value is percent/100
            \* targetSize. For example, the calculated value of a 80% of
            a managed instance group with 150 instances would be (80/100
            \* 150) = 120 VM instances. If there is a remainder, the
            number is rounded.

            This field is a member of `oneof`_ ``_calculated``.
        fixed (int):
            Specifies a fixed number of VM instances.
            This must be a positive integer.

            This field is a member of `oneof`_ ``_fixed``.
        percent (int):
            Specifies a percentage of instances between 0
            to 100%, inclusive. For example, specify 80 for
            80%.

            This field is a member of `oneof`_ ``_percent``.
    """

    calculated: int = proto.Field(
        proto.INT32,
        number=472082878,
        optional=True,
    )
    fixed: int = proto.Field(
        proto.INT32,
        number=97445748,
        optional=True,
    )
    percent: int = proto.Field(
        proto.INT32,
        number=394814533,
        optional=True,
    )


class ForwardingRule(proto.Message):
    r"""Represents a Forwarding Rule resource. Forwarding rule resources in
    Google Cloud can be either regional or global in scope: \*
    `Global <https://cloud.google.com/compute/docs/reference/rest/v1/globalForwardingRules>`__
    \*
    `Regional <https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules>`__
    A forwarding rule and its corresponding IP address represent the
    frontend configuration of a Google Cloud Platform load balancer.
    Forwarding rules can also reference target instances and Cloud VPN
    Classic gateways (targetVpnGateway). For more information, read
    Forwarding rule concepts and Using protocol forwarding.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        I_p_address (str):
            IP address for which this forwarding rule accepts traffic.
            When a client sends traffic to this IP address, the
            forwarding rule directs the traffic to the referenced target
            or backendService. While creating a forwarding rule,
            specifying an IPAddress is required under the following
            circumstances: - When the target is set to targetGrpcProxy
            and validateForProxyless is set to true, the IPAddress
            should be set to 0.0.0.0. - When the target is a Private
            Service Connect Google APIs bundle, you must specify an
            IPAddress. Otherwise, you can optionally specify an IP
            address that references an existing static (reserved) IP
            address resource. When omitted, Google Cloud assigns an
            ephemeral IP address. Use one of the following formats to
            specify an IP address while creating a forwarding rule: \*
            IP address number, as in ``100.1.2.3`` \* IPv6 address
            range, as in ``2600:1234::/96`` \* Full resource URL, as in
            https://www.googleapis.com/compute/v1/projects/
            project_id/regions/region/addresses/address-name \* Partial
            URL or by name, as in: -
            projects/project_id/regions/region/addresses/address-name -
            regions/region/addresses/address-name -
            global/addresses/address-name - address-name The forwarding
            rule's target or backendService, and in most cases, also the
            loadBalancingScheme, determine the type of IP address that
            you can use. For detailed information, see `IP address
            specifications <https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications>`__.
            When reading an IPAddress, the API always returns the IP
            address number.

            This field is a member of `oneof`_ ``_I_p_address``.
        I_p_protocol (str):
            The IP protocol to which this rule applies. For protocol
            forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP
            and L3_DEFAULT. The valid IP protocols are different for
            different load balancing products as described in `Load
            balancing
            features <https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends>`__.
            Check the IPProtocolEnum enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_I_p_protocol``.
        all_ports (bool):
            This field can only be used: - If IPProtocol is one of TCP,
            UDP, or SCTP. - By internal TCP/UDP load balancers, backend
            service-based network load balancers, and internal and
            external protocol forwarding. Set this field to true to
            allow packets addressed to any port or packets lacking
            destination port information (for example, UDP fragments
            after the first fragment) to be forwarded to the backends
            configured with this forwarding rule. The ports, port_range,
            and allPorts fields are mutually exclusive.

            This field is a member of `oneof`_ ``_all_ports``.
        allow_global_access (bool):
            This field is used along with the backend_service field for
            internal load balancing or with the target field for
            internal TargetInstance. If the field is set to TRUE,
            clients can access ILB from all regions. Otherwise only
            allows access from clients in the same region as the
            internal load balancer.

            This field is a member of `oneof`_ ``_allow_global_access``.
        backend_service (str):
            Identifies the backend service to which the
            forwarding rule sends traffic. Required for
            Internal TCP/UDP Load Balancing and Network Load
            Balancing; must be omitted for all other load
            balancer types.

            This field is a member of `oneof`_ ``_backend_service``.
        base_forwarding_rule (str):
            [Output Only] The URL for the corresponding base Forwarding
            Rule. By base Forwarding Rule, we mean the Forwarding Rule
            that has the same IP address, protocol, and port settings
            with the current Forwarding Rule, but without sourceIPRanges
            specified. Always empty if the current Forwarding Rule does
            not have sourceIPRanges specified.

            This field is a member of `oneof`_ ``_base_forwarding_rule``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a ForwardingRule. Include
            the fingerprint in patch request to ensure that
            you do not overwrite changes that were applied
            from another concurrent request. To see the
            latest fingerprint, make a get() request to
            retrieve a ForwardingRule.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        ip_version (str):
            The IP Version that will be used by this
            forwarding rule. Valid options are IPV4 or IPV6.
            Check the IpVersion enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_ip_version``.
        is_mirroring_collector (bool):
            Indicates whether or not this load balancer
            can be used as a collector for packet mirroring.
            To prevent mirroring loops, instances behind
            this load balancer will not have their traffic
            mirrored even if a PacketMirroring rule applies
            to them. This can only be set to true for load
            balancers that have their loadBalancingScheme
            set to INTERNAL.

            This field is a member of `oneof`_ ``_is_mirroring_collector``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#forwardingRule for Forwarding Rule resources.

            This field is a member of `oneof`_ ``_kind``.
        label_fingerprint (str):
            A fingerprint for the labels being applied to
            this resource, which is essentially a hash of
            the labels set used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update labels. You must always provide an
            up-to-date fingerprint hash in order to update
            or change labels, otherwise the request will
            fail with error 412 conditionNotMet. To see the
            latest fingerprint, make a get() request to
            retrieve a ForwardingRule.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            Labels for this resource. These can only be
            added or modified by the setLabels method. Each
            label key/value pair must comply with RFC1035.
            Label values may be empty.
        load_balancing_scheme (str):
            Specifies the forwarding rule type. For more
            information about forwarding rules, refer to
            Forwarding rule concepts. Check the
            LoadBalancingScheme enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_load_balancing_scheme``.
        metadata_filters (MutableSequence[google.cloud.compute_v1.types.MetadataFilter]):
            Opaque filter criteria used by load balancer to restrict
            routing configuration to a limited set of xDS compliant
            clients. In their xDS requests to load balancer, xDS clients
            present node metadata. When there is a match, the relevant
            configuration is made available to those proxies. Otherwise,
            all the resources (e.g. TargetHttpProxy, UrlMap) referenced
            by the ForwardingRule are not visible to those proxies. For
            each metadataFilter in this list, if its filterMatchCriteria
            is set to MATCH_ANY, at least one of the filterLabels must
            match the corresponding label provided in the metadata. If
            its filterMatchCriteria is set to MATCH_ALL, then all of its
            filterLabels must match with corresponding labels provided
            in the metadata. If multiple metadataFilters are specified,
            all of them need to be satisfied in order to be considered a
            match. metadataFilters specified here will be applifed
            before those specified in the UrlMap that this
            ForwardingRule references. metadataFilters only applies to
            Loadbalancers that have their loadBalancingScheme set to
            INTERNAL_SELF_MANAGED.
        name (str):
            Name of the resource; provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash. For
            Private Service Connect forwarding rules that forward
            traffic to Google APIs, the forwarding rule name must be a
            1-20 characters string with lowercase letters and numbers
            and must start with a letter.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            This field is not used for external load
            balancing. For Internal TCP/UDP Load Balancing,
            this field identifies the network that the load
            balanced IP should belong to for this Forwarding
            Rule. If this field is not specified, the
            default network will be used. For Private
            Service Connect forwarding rules that forward
            traffic to Google APIs, a network must be
            provided.

            This field is a member of `oneof`_ ``_network``.
        network_tier (str):
            This signifies the networking tier used for
            configuring this load balancer and can only take
            the following values: PREMIUM, STANDARD. For
            regional ForwardingRule, the valid values are
            PREMIUM and STANDARD. For GlobalForwardingRule,
            the valid value is PREMIUM. If this field is not
            specified, it is assumed to be PREMIUM. If
            IPAddress is specified, this value must be equal
            to the networkTier of the Address. Check the
            NetworkTier enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_network_tier``.
        no_automate_dns_zone (bool):
            This is used in PSC consumer ForwardingRule
            to control whether it should try to
            auto-generate a DNS zone or not. Non-PSC
            forwarding rules do not use this field.

            This field is a member of `oneof`_ ``_no_automate_dns_zone``.
        port_range (str):
            This field can only be used: - If IPProtocol is one of TCP,
            UDP, or SCTP. - By backend service-based network load
            balancers, target pool-based network load balancers,
            internal proxy load balancers, external proxy load
            balancers, Traffic Director, external protocol forwarding,
            and Classic VPN. Some products have restrictions on what
            ports can be used. See port specifications for details. Only
            packets addressed to ports in the specified range will be
            forwarded to the backends configured with this forwarding
            rule. The ports, port_range, and allPorts fields are
            mutually exclusive. For external forwarding rules, two or
            more forwarding rules cannot use the same [IPAddress,
            IPProtocol] pair, and cannot have overlapping portRanges.
            For internal forwarding rules within the same VPC network,
            two or more forwarding rules cannot use the same [IPAddress,
            IPProtocol] pair, and cannot have overlapping portRanges.
            @pattern: \\d+(?:-\d+)?

            This field is a member of `oneof`_ ``_port_range``.
        ports (MutableSequence[str]):
            This field can only be used: - If IPProtocol is one of TCP,
            UDP, or SCTP. - By internal TCP/UDP load balancers, backend
            service-based network load balancers, and internal protocol
            forwarding. You can specify a list of up to five ports by
            number, separated by commas. The ports can be contiguous or
            discontiguous. Only packets addressed to these ports will be
            forwarded to the backends configured with this forwarding
            rule. For external forwarding rules, two or more forwarding
            rules cannot use the same [IPAddress, IPProtocol] pair, and
            cannot share any values defined in ports. For internal
            forwarding rules within the same VPC network, two or more
            forwarding rules cannot use the same [IPAddress, IPProtocol]
            pair, and cannot share any values defined in ports. The
            ports, port_range, and allPorts fields are mutually
            exclusive. @pattern: \\d+(?:-\d+)?
        psc_connection_id (int):
            [Output Only] The PSC connection id of the PSC Forwarding
            Rule.

            This field is a member of `oneof`_ ``_psc_connection_id``.
        psc_connection_status (str):
            Check the PscConnectionStatus enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_psc_connection_status``.
        region (str):
            [Output Only] URL of the region where the regional
            forwarding rule resides. This field is not applicable to
            global forwarding rules. You must specify this field as part
            of the HTTP request URL. It is not settable as a field in
            the request body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        service_directory_registrations (MutableSequence[google.cloud.compute_v1.types.ForwardingRuleServiceDirectoryRegistration]):
            Service Directory resources to register this
            forwarding rule with. Currently, only supports a
            single Service Directory resource.
        service_label (str):
            An optional prefix to the service name for this Forwarding
            Rule. If specified, the prefix is the first label of the
            fully qualified service name. The label must be 1-63
            characters long, and comply with RFC1035. Specifically, the
            label must be 1-63 characters long and match the regular
            expression ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the
            first character must be a lowercase letter, and all
            following characters must be a dash, lowercase letter, or
            digit, except the last character, which cannot be a dash.
            This field is only used for internal load balancing.

            This field is a member of `oneof`_ ``_service_label``.
        service_name (str):
            [Output Only] The internal fully qualified service name for
            this Forwarding Rule. This field is only used for internal
            load balancing.

            This field is a member of `oneof`_ ``_service_name``.
        source_ip_ranges (MutableSequence[str]):
            If not empty, this Forwarding Rule will only forward the
            traffic when the source IP address matches one of the IP
            addresses or CIDR ranges set here. Note that a Forwarding
            Rule can only have up to 64 source IP ranges, and this field
            can only be used with a regional Forwarding Rule whose
            scheme is EXTERNAL. Each source_ip_range entry should be
            either an IP address (for example, 1.2.3.4) or a CIDR range
            (for example, 1.2.3.0/24).
        subnetwork (str):
            This field identifies the subnetwork that the
            load balanced IP should belong to for this
            Forwarding Rule, used in internal load balancing
            and network load balancing with IPv6. If the
            network specified is in auto subnet mode, this
            field is optional. However, a subnetwork must be
            specified if the network is in custom subnet
            mode or when creating external forwarding rule
            with IPv6.

            This field is a member of `oneof`_ ``_subnetwork``.
        target (str):
            The URL of the target resource to receive the matched
            traffic. For regional forwarding rules, this target must be
            in the same region as the forwarding rule. For global
            forwarding rules, this target must be a global load
            balancing resource. The forwarded traffic must be of a type
            appropriate to the target object. - For load balancers, see
            the "Target" column in `Port
            specifications <https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications>`__.
            - For Private Service Connect forwarding rules that forward
            traffic to Google APIs, provide the name of a supported
            Google API bundle: - vpc-sc - APIs that support VPC Service
            Controls. - all-apis - All supported Google APIs. - For
            Private Service Connect forwarding rules that forward
            traffic to managed services, the target must be a service
            attachment.

            This field is a member of `oneof`_ ``_target``.
    """

    class IPProtocolEnum(proto.Enum):
        r"""The IP protocol to which this rule applies. For protocol forwarding,
        valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The
        valid IP protocols are different for different load balancing
        products as described in `Load balancing
        features <https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends>`__.

        Values:
            UNDEFINED_I_P_PROTOCOL_ENUM (0):
                A value indicating that the enum field is not
                set.
            AH (2087):
                No description available.
            ESP (68962):
                No description available.
            ICMP (2241597):
                No description available.
            L3_DEFAULT (48151369):
                No description available.
            SCTP (2539724):
                No description available.
            TCP (82881):
                No description available.
            UDP (83873):
                No description available.
        """
        UNDEFINED_I_P_PROTOCOL_ENUM = 0
        AH = 2087
        ESP = 68962
        ICMP = 2241597
        L3_DEFAULT = 48151369
        SCTP = 2539724
        TCP = 82881
        UDP = 83873

    class IpVersion(proto.Enum):
        r"""The IP Version that will be used by this forwarding rule.
        Valid options are IPV4 or IPV6.

        Values:
            UNDEFINED_IP_VERSION (0):
                A value indicating that the enum field is not
                set.
            IPV4 (2254341):
                No description available.
            IPV6 (2254343):
                No description available.
            UNSPECIFIED_VERSION (21850000):
                No description available.
        """
        UNDEFINED_IP_VERSION = 0
        IPV4 = 2254341
        IPV6 = 2254343
        UNSPECIFIED_VERSION = 21850000

    class LoadBalancingScheme(proto.Enum):
        r"""Specifies the forwarding rule type. For more information
        about forwarding rules, refer to Forwarding rule concepts.

        Values:
            UNDEFINED_LOAD_BALANCING_SCHEME (0):
                A value indicating that the enum field is not
                set.
            EXTERNAL (35607499):
                No description available.
            EXTERNAL_MANAGED (512006923):
                No description available.
            INTERNAL (279295677):
                No description available.
            INTERNAL_MANAGED (37350397):
                No description available.
            INTERNAL_SELF_MANAGED (236211150):
                No description available.
            INVALID (530283991):
                No description available.
        """
        UNDEFINED_LOAD_BALANCING_SCHEME = 0
        EXTERNAL = 35607499
        EXTERNAL_MANAGED = 512006923
        INTERNAL = 279295677
        INTERNAL_MANAGED = 37350397
        INTERNAL_SELF_MANAGED = 236211150
        INVALID = 530283991

    class NetworkTier(proto.Enum):
        r"""This signifies the networking tier used for configuring this
        load balancer and can only take the following values: PREMIUM,
        STANDARD. For regional ForwardingRule, the valid values are
        PREMIUM and STANDARD. For GlobalForwardingRule, the valid value
        is PREMIUM. If this field is not specified, it is assumed to be
        PREMIUM. If IPAddress is specified, this value must be equal to
        the networkTier of the Address.

        Values:
            UNDEFINED_NETWORK_TIER (0):
                A value indicating that the enum field is not
                set.
            FIXED_STANDARD (310464328):
                Public internet quality with fixed bandwidth.
            PREMIUM (399530551):
                High quality, Google-grade network tier,
                support for all networking products.
            STANDARD (484642493):
                Public internet quality, only limited support
                for other networking products.
            STANDARD_OVERRIDES_FIXED_STANDARD (465847234):
                (Output only) Temporary tier for FIXED_STANDARD when fixed
                standard tier is expired or not configured.
        """
        UNDEFINED_NETWORK_TIER = 0
        FIXED_STANDARD = 310464328
        PREMIUM = 399530551
        STANDARD = 484642493
        STANDARD_OVERRIDES_FIXED_STANDARD = 465847234

    class PscConnectionStatus(proto.Enum):
        r"""

        Values:
            UNDEFINED_PSC_CONNECTION_STATUS (0):
                A value indicating that the enum field is not
                set.
            ACCEPTED (246714279):
                The connection has been accepted by the
                producer.
            CLOSED (380163436):
                The connection has been closed by the
                producer and will not serve traffic going
                forward.
            NEEDS_ATTENTION (344491452):
                The connection has been accepted by the
                producer, but the producer needs to take further
                action before the forwarding rule can serve
                traffic.
            PENDING (35394935):
                The connection is pending acceptance by the
                producer.
            REJECTED (174130302):
                The connection has been rejected by the
                producer.
            STATUS_UNSPECIFIED (42133066):
                No description available.
        """
        UNDEFINED_PSC_CONNECTION_STATUS = 0
        ACCEPTED = 246714279
        CLOSED = 380163436
        NEEDS_ATTENTION = 344491452
        PENDING = 35394935
        REJECTED = 174130302
        STATUS_UNSPECIFIED = 42133066

    I_p_address: str = proto.Field(
        proto.STRING,
        number=42976943,
        optional=True,
    )
    I_p_protocol: str = proto.Field(
        proto.STRING,
        number=488094525,
        optional=True,
    )
    all_ports: bool = proto.Field(
        proto.BOOL,
        number=445175796,
        optional=True,
    )
    allow_global_access: bool = proto.Field(
        proto.BOOL,
        number=499409674,
        optional=True,
    )
    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
        optional=True,
    )
    base_forwarding_rule: str = proto.Field(
        proto.STRING,
        number=524873104,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    ip_version: str = proto.Field(
        proto.STRING,
        number=294959552,
        optional=True,
    )
    is_mirroring_collector: bool = proto.Field(
        proto.BOOL,
        number=119255164,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    load_balancing_scheme: str = proto.Field(
        proto.STRING,
        number=363890244,
        optional=True,
    )
    metadata_filters: MutableSequence["MetadataFilter"] = proto.RepeatedField(
        proto.MESSAGE,
        number=464725739,
        message="MetadataFilter",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    network_tier: str = proto.Field(
        proto.STRING,
        number=517397843,
        optional=True,
    )
    no_automate_dns_zone: bool = proto.Field(
        proto.BOOL,
        number=64546991,
        optional=True,
    )
    port_range: str = proto.Field(
        proto.STRING,
        number=217518079,
        optional=True,
    )
    ports: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=106854418,
    )
    psc_connection_id: int = proto.Field(
        proto.UINT64,
        number=292082397,
        optional=True,
    )
    psc_connection_status: str = proto.Field(
        proto.STRING,
        number=184149172,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    service_directory_registrations: MutableSequence[
        "ForwardingRuleServiceDirectoryRegistration"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=223549694,
        message="ForwardingRuleServiceDirectoryRegistration",
    )
    service_label: str = proto.Field(
        proto.STRING,
        number=417008874,
        optional=True,
    )
    service_name: str = proto.Field(
        proto.STRING,
        number=359880149,
        optional=True,
    )
    source_ip_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=111563210,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
        optional=True,
    )
    target: str = proto.Field(
        proto.STRING,
        number=192835985,
        optional=True,
    )


class ForwardingRuleAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.ForwardingRulesScopedList]):
            A list of ForwardingRulesScopedList
            resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#forwardingRuleAggregatedList for lists of forwarding
            rules.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "ForwardingRulesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="ForwardingRulesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ForwardingRuleList(proto.Message):
    r"""Contains a list of ForwardingRule resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.ForwardingRule]):
            A list of ForwardingRule resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["ForwardingRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="ForwardingRule",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ForwardingRuleReference(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rule (str):

            This field is a member of `oneof`_ ``_forwarding_rule``.
    """

    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
        optional=True,
    )


class ForwardingRuleServiceDirectoryRegistration(proto.Message):
    r"""Describes the auto-registration of the Forwarding Rule to
    Service Directory. The region and project of the Service
    Directory resource generated from this registration will be the
    same as this Forwarding Rule.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        namespace (str):
            Service Directory namespace to register the
            forwarding rule under.

            This field is a member of `oneof`_ ``_namespace``.
        service (str):
            Service Directory service to register the
            forwarding rule under.

            This field is a member of `oneof`_ ``_service``.
        service_directory_region (str):
            [Optional] Service Directory region to register this global
            forwarding rule under. Default to "us-central1". Only used
            for PSC for Google APIs. All PSC for Google APIs Forwarding
            Rules on the same network should use the same Service
            Directory region.

            This field is a member of `oneof`_ ``_service_directory_region``.
    """

    namespace: str = proto.Field(
        proto.STRING,
        number=178476379,
        optional=True,
    )
    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )
    service_directory_region: str = proto.Field(
        proto.STRING,
        number=74030416,
        optional=True,
    )


class ForwardingRulesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rules (MutableSequence[google.cloud.compute_v1.types.ForwardingRule]):
            A list of forwarding rules contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of forwarding rules when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    forwarding_rules: MutableSequence["ForwardingRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=315821365,
        message="ForwardingRule",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class GRPCHealthCheck(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        grpc_service_name (str):
            The gRPC service name for the health check. This field is
            optional. The value of grpc_service_name has the following
            meanings by convention: - Empty service_name means the
            overall status of all services at the backend. - Non-empty
            service_name means the health of that gRPC service, as
            defined by the owner of the service. The grpc_service_name
            can only be ASCII.

            This field is a member of `oneof`_ ``_grpc_service_name``.
        port (int):
            The TCP port number to which the health check
            prober sends packets. Valid values are 1 through
            65535.

            This field is a member of `oneof`_ ``_port``.
        port_name (str):
            Not supported.

            This field is a member of `oneof`_ ``_port_name``.
        port_specification (str):
            Specifies how a port is selected for health checking. Can be
            one of the following values: USE_FIXED_PORT: Specifies a
            port number explicitly using the port field in the health
            check. Supported by backend services for pass-through load
            balancers and backend services for proxy load balancers. Not
            supported by target pools. The health check supports all
            backends supported by the backend service provided the
            backend can be health checked. For example, GCE_VM_IP
            network endpoint groups, GCE_VM_IP_PORT network endpoint
            groups, and instance group backends. USE_NAMED_PORT: Not
            supported. USE_SERVING_PORT: Provides an indirect method of
            specifying the health check port by referring to the backend
            service. Only supported by backend services for proxy load
            balancers. Not supported by target pools. Not supported by
            backend services for pass-through load balancers. Supports
            all backends that can be health checked; for example,
            GCE_VM_IP_PORT network endpoint groups and instance group
            backends. For GCE_VM_IP_PORT network endpoint group
            backends, the health check uses the port number specified
            for each endpoint in the network endpoint group. For
            instance group backends, the health check uses the port
            number determined by looking up the backend service's named
            port in the instance group's list of named ports. Check the
            PortSpecification enum for the list of possible values.

            This field is a member of `oneof`_ ``_port_specification``.
    """

    class PortSpecification(proto.Enum):
        r"""Specifies how a port is selected for health checking. Can be one of
        the following values: USE_FIXED_PORT: Specifies a port number
        explicitly using the port field in the health check. Supported by
        backend services for pass-through load balancers and backend
        services for proxy load balancers. Not supported by target pools.
        The health check supports all backends supported by the backend
        service provided the backend can be health checked. For example,
        GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint
        groups, and instance group backends. USE_NAMED_PORT: Not supported.
        USE_SERVING_PORT: Provides an indirect method of specifying the
        health check port by referring to the backend service. Only
        supported by backend services for proxy load balancers. Not
        supported by target pools. Not supported by backend services for
        pass-through load balancers. Supports all backends that can be
        health checked; for example, GCE_VM_IP_PORT network endpoint groups
        and instance group backends. For GCE_VM_IP_PORT network endpoint
        group backends, the health check uses the port number specified for
        each endpoint in the network endpoint group. For instance group
        backends, the health check uses the port number determined by
        looking up the backend service's named port in the instance group's
        list of named ports.

        Values:
            UNDEFINED_PORT_SPECIFICATION (0):
                A value indicating that the enum field is not
                set.
            USE_FIXED_PORT (190235748):
                The port number in the health check's port is
                used for health checking. Applies to network
                endpoint group and instance group backends.
            USE_NAMED_PORT (349300671):
                Not supported.
            USE_SERVING_PORT (362637516):
                For network endpoint group backends, the
                health check uses the port number specified on
                each endpoint in the network endpoint group. For
                instance group backends, the health check uses
                the port number specified for the backend
                service's named port defined in the instance
                group's named ports.
        """
        UNDEFINED_PORT_SPECIFICATION = 0
        USE_FIXED_PORT = 190235748
        USE_NAMED_PORT = 349300671
        USE_SERVING_PORT = 362637516

    grpc_service_name: str = proto.Field(
        proto.STRING,
        number=136533078,
        optional=True,
    )
    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )
    port_name: str = proto.Field(
        proto.STRING,
        number=41534345,
        optional=True,
    )
    port_specification: str = proto.Field(
        proto.STRING,
        number=51590597,
        optional=True,
    )


class GetAcceleratorTypeRequest(proto.Message):
    r"""A request message for AcceleratorTypes.Get. See the method
    description for details.

    Attributes:
        accelerator_type (str):
            Name of the accelerator type to return.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    accelerator_type: str = proto.Field(
        proto.STRING,
        number=138031246,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetAddressRequest(proto.Message):
    r"""A request message for Addresses.Get. See the method
    description for details.

    Attributes:
        address (str):
            Name of the address resource to return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
    """

    address: str = proto.Field(
        proto.STRING,
        number=462920692,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetAssociationFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.GetAssociation. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to which the
            queried rule belongs.
        name (str):
            The name of the association to get from the
            firewall policy.

            This field is a member of `oneof`_ ``_name``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )


class GetAssociationNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.GetAssociation.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to which the
            queried association belongs.
        name (str):
            The name of the association to get from the
            firewall policy.

            This field is a member of `oneof`_ ``_name``.
        project (str):
            Project ID for this request.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetAssociationRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.GetAssociation. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to which the
            queried association belongs.
        name (str):
            The name of the association to get from the
            firewall policy.

            This field is a member of `oneof`_ ``_name``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetAutoscalerRequest(proto.Message):
    r"""A request message for Autoscalers.Get. See the method
    description for details.

    Attributes:
        autoscaler (str):
            Name of the autoscaler to return.
        project (str):
            Project ID for this request.
        zone (str):
            Name of the zone for this request.
    """

    autoscaler: str = proto.Field(
        proto.STRING,
        number=517258967,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetBackendBucketRequest(proto.Message):
    r"""A request message for BackendBuckets.Get. See the method
    description for details.

    Attributes:
        backend_bucket (str):
            Name of the BackendBucket resource to return.
        project (str):
            Project ID for this request.
    """

    backend_bucket: str = proto.Field(
        proto.STRING,
        number=91714037,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.Get. See the method
    description for details.

    Attributes:
        backend_service (str):
            Name of the BackendService resource to
            return.
        project (str):
            Project ID for this request.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetDiagnosticsInterconnectRequest(proto.Message):
    r"""A request message for Interconnects.GetDiagnostics. See the
    method description for details.

    Attributes:
        interconnect (str):
            Name of the interconnect resource to query.
        project (str):
            Project ID for this request.
    """

    interconnect: str = proto.Field(
        proto.STRING,
        number=224601230,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetDiskRequest(proto.Message):
    r"""A request message for Disks.Get. See the method description
    for details.

    Attributes:
        disk (str):
            Name of the persistent disk to return.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetDiskTypeRequest(proto.Message):
    r"""A request message for DiskTypes.Get. See the method
    description for details.

    Attributes:
        disk_type (str):
            Name of the disk type to return.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    disk_type: str = proto.Field(
        proto.STRING,
        number=93009052,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetEffectiveFirewallsInstanceRequest(proto.Message):
    r"""A request message for Instances.GetEffectiveFirewalls. See
    the method description for details.

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        network_interface (str):
            The name of the network interface to get the
            effective firewalls.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    network_interface: str = proto.Field(
        proto.STRING,
        number=365387880,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetEffectiveFirewallsNetworkRequest(proto.Message):
    r"""A request message for Networks.GetEffectiveFirewalls. See the
    method description for details.

    Attributes:
        network (str):
            Name of the network for this request.
        project (str):
            Project ID for this request.
    """

    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.GetEffectiveFirewalls. See the
    method description for details.

    Attributes:
        network (str):
            Network reference
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetExternalVpnGatewayRequest(proto.Message):
    r"""A request message for ExternalVpnGateways.Get. See the method
    description for details.

    Attributes:
        external_vpn_gateway (str):
            Name of the externalVpnGateway to return.
        project (str):
            Project ID for this request.
    """

    external_vpn_gateway: str = proto.Field(
        proto.STRING,
        number=109898629,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.Get. See the method
    description for details.

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to get.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )


class GetFirewallRequest(proto.Message):
    r"""A request message for Firewalls.Get. See the method
    description for details.

    Attributes:
        firewall (str):
            Name of the firewall rule to return.
        project (str):
            Project ID for this request.
    """

    firewall: str = proto.Field(
        proto.STRING,
        number=511016192,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetForwardingRuleRequest(proto.Message):
    r"""A request message for ForwardingRules.Get. See the method
    description for details.

    Attributes:
        forwarding_rule (str):
            Name of the ForwardingRule resource to
            return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetFromFamilyImageRequest(proto.Message):
    r"""A request message for Images.GetFromFamily. See the method
    description for details.

    Attributes:
        family (str):
            Name of the image family to search for.
        project (str):
            The image project that the image belongs to.
            For example, to get a CentOS image, specify
            centos-cloud as the image project.
    """

    family: str = proto.Field(
        proto.STRING,
        number=328751972,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetGlobalAddressRequest(proto.Message):
    r"""A request message for GlobalAddresses.Get. See the method
    description for details.

    Attributes:
        address (str):
            Name of the address resource to return.
        project (str):
            Project ID for this request.
    """

    address: str = proto.Field(
        proto.STRING,
        number=462920692,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetGlobalForwardingRuleRequest(proto.Message):
    r"""A request message for GlobalForwardingRules.Get. See the
    method description for details.

    Attributes:
        forwarding_rule (str):
            Name of the ForwardingRule resource to
            return.
        project (str):
            Project ID for this request.
    """

    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetGlobalNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for GlobalNetworkEndpointGroups.Get. See
    the method description for details.

    Attributes:
        network_endpoint_group (str):
            The name of the network endpoint group. It
            should comply with RFC1035.
        project (str):
            Project ID for this request.
    """

    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetGlobalOperationRequest(proto.Message):
    r"""A request message for GlobalOperations.Get. See the method
    description for details.

    Attributes:
        operation (str):
            Name of the Operations resource to return.
        project (str):
            Project ID for this request.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetGlobalOrganizationOperationRequest(proto.Message):
    r"""A request message for GlobalOrganizationOperations.Get. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        operation (str):
            Name of the Operations resource to return.
        parent_id (str):
            Parent ID for this request.

            This field is a member of `oneof`_ ``_parent_id``.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    parent_id: str = proto.Field(
        proto.STRING,
        number=459714768,
        optional=True,
    )


class GetGlobalPublicDelegatedPrefixeRequest(proto.Message):
    r"""A request message for GlobalPublicDelegatedPrefixes.Get. See
    the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        public_delegated_prefix (str):
            Name of the PublicDelegatedPrefix resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_delegated_prefix: str = proto.Field(
        proto.STRING,
        number=204238440,
    )


class GetGuestAttributesInstanceRequest(proto.Message):
    r"""A request message for Instances.GetGuestAttributes. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        project (str):
            Project ID for this request.
        query_path (str):
            Specifies the guest attributes path to be
            queried.

            This field is a member of `oneof`_ ``_query_path``.
        variable_key (str):
            Specifies the key for the guest attributes
            entry.

            This field is a member of `oneof`_ ``_variable_key``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    query_path: str = proto.Field(
        proto.STRING,
        number=368591164,
        optional=True,
    )
    variable_key: str = proto.Field(
        proto.STRING,
        number=164364828,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetHealthBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.GetHealth. See the
    method description for details.

    Attributes:
        backend_service (str):
            Name of the BackendService resource to which
            the queried instance belongs.
        project (str):

        resource_group_reference_resource (google.cloud.compute_v1.types.ResourceGroupReference):
            The body resource for this request
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource_group_reference_resource: "ResourceGroupReference" = proto.Field(
        proto.MESSAGE,
        number=112951123,
        message="ResourceGroupReference",
    )


class GetHealthCheckRequest(proto.Message):
    r"""A request message for HealthChecks.Get. See the method
    description for details.

    Attributes:
        health_check (str):
            Name of the HealthCheck resource to return.
        project (str):
            Project ID for this request.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetHealthRegionBackendServiceRequest(proto.Message):
    r"""A request message for RegionBackendServices.GetHealth. See
    the method description for details.

    Attributes:
        backend_service (str):
            Name of the BackendService resource for which
            to get health.
        project (str):

        region (str):
            Name of the region scoping this request.
        resource_group_reference_resource (google.cloud.compute_v1.types.ResourceGroupReference):
            The body resource for this request
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource_group_reference_resource: "ResourceGroupReference" = proto.Field(
        proto.MESSAGE,
        number=112951123,
        message="ResourceGroupReference",
    )


class GetHealthTargetPoolRequest(proto.Message):
    r"""A request message for TargetPools.GetHealth. See the method
    description for details.

    Attributes:
        instance_reference_resource (google.cloud.compute_v1.types.InstanceReference):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        target_pool (str):
            Name of the TargetPool resource to which the
            queried instance belongs.
    """

    instance_reference_resource: "InstanceReference" = proto.Field(
        proto.MESSAGE,
        number=292926060,
        message="InstanceReference",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    target_pool: str = proto.Field(
        proto.STRING,
        number=62796298,
    )


class GetIamPolicyBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.GetIamPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyDiskRequest(proto.Message):
    r"""A request message for Disks.GetIamPolicy. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetIamPolicyFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.GetIamPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyImageRequest(proto.Message):
    r"""A request message for Images.GetIamPolicy. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyInstanceRequest(proto.Message):
    r"""A request message for Instances.GetIamPolicy. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetIamPolicyInstanceTemplateRequest(proto.Message):
    r"""A request message for InstanceTemplates.GetIamPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyLicenseRequest(proto.Message):
    r"""A request message for Licenses.GetIamPolicy. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyMachineImageRequest(proto.Message):
    r"""A request message for MachineImages.GetIamPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyNetworkAttachmentRequest(proto.Message):
    r"""A request message for NetworkAttachments.GetIamPolicy. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.GetIamPolicy.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.GetIamPolicy. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetIamPolicyNodeTemplateRequest(proto.Message):
    r"""A request message for NodeTemplates.GetIamPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyRegionBackendServiceRequest(proto.Message):
    r"""A request message for RegionBackendServices.GetIamPolicy. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.GetIamPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.GetIamPolicy. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyReservationRequest(proto.Message):
    r"""A request message for Reservations.GetIamPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetIamPolicyResourcePolicyRequest(proto.Message):
    r"""A request message for ResourcePolicies.GetIamPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicyServiceAttachmentRequest(proto.Message):
    r"""A request message for ServiceAttachments.GetIamPolicy. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicySnapshotRequest(proto.Message):
    r"""A request message for Snapshots.GetIamPolicy. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetIamPolicySubnetworkRequest(proto.Message):
    r"""A request message for Subnetworks.GetIamPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        options_requested_policy_version (int):
            Requested IAM Policy version.

            This field is a member of `oneof`_ ``_options_requested_policy_version``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    options_requested_policy_version: int = proto.Field(
        proto.INT32,
        number=499220029,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class GetImageFamilyViewRequest(proto.Message):
    r"""A request message for ImageFamilyViews.Get. See the method
    description for details.

    Attributes:
        family (str):
            Name of the image family to search for.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    family: str = proto.Field(
        proto.STRING,
        number=328751972,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetImageRequest(proto.Message):
    r"""A request message for Images.Get. See the method description
    for details.

    Attributes:
        image (str):
            Name of the image resource to return.
        project (str):
            Project ID for this request.
    """

    image: str = proto.Field(
        proto.STRING,
        number=100313435,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetInstanceGroupManagerRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.Get. See the
    method description for details.

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetInstanceGroupRequest(proto.Message):
    r"""A request message for InstanceGroups.Get. See the method
    description for details.

    Attributes:
        instance_group (str):
            The name of the instance group.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone where the instance group
            is located.
    """

    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetInstanceRequest(proto.Message):
    r"""A request message for Instances.Get. See the method
    description for details.

    Attributes:
        instance (str):
            Name of the instance resource to return.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetInstanceTemplateRequest(proto.Message):
    r"""A request message for InstanceTemplates.Get. See the method
    description for details.

    Attributes:
        instance_template (str):
            The name of the instance template.
        project (str):
            Project ID for this request.
    """

    instance_template: str = proto.Field(
        proto.STRING,
        number=309248228,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetInterconnectAttachmentRequest(proto.Message):
    r"""A request message for InterconnectAttachments.Get. See the
    method description for details.

    Attributes:
        interconnect_attachment (str):
            Name of the interconnect attachment to
            return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
    """

    interconnect_attachment: str = proto.Field(
        proto.STRING,
        number=308135284,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetInterconnectLocationRequest(proto.Message):
    r"""A request message for InterconnectLocations.Get. See the
    method description for details.

    Attributes:
        interconnect_location (str):
            Name of the interconnect location to return.
        project (str):
            Project ID for this request.
    """

    interconnect_location: str = proto.Field(
        proto.STRING,
        number=492235846,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetInterconnectRequest(proto.Message):
    r"""A request message for Interconnects.Get. See the method
    description for details.

    Attributes:
        interconnect (str):
            Name of the interconnect to return.
        project (str):
            Project ID for this request.
    """

    interconnect: str = proto.Field(
        proto.STRING,
        number=224601230,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetLicenseCodeRequest(proto.Message):
    r"""A request message for LicenseCodes.Get. See the method
    description for details.

    Attributes:
        license_code (str):
            Number corresponding to the License code
            resource to return.
        project (str):
            Project ID for this request.
    """

    license_code: str = proto.Field(
        proto.STRING,
        number=1467179,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetLicenseRequest(proto.Message):
    r"""A request message for Licenses.Get. See the method
    description for details.

    Attributes:
        license_ (str):
            Name of the License resource to return.
        project (str):
            Project ID for this request.
    """

    license_: str = proto.Field(
        proto.STRING,
        number=166757441,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetMachineImageRequest(proto.Message):
    r"""A request message for MachineImages.Get. See the method
    description for details.

    Attributes:
        machine_image (str):
            The name of the machine image.
        project (str):
            Project ID for this request.
    """

    machine_image: str = proto.Field(
        proto.STRING,
        number=69189475,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetMachineTypeRequest(proto.Message):
    r"""A request message for MachineTypes.Get. See the method
    description for details.

    Attributes:
        machine_type (str):
            Name of the machine type to return.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    machine_type: str = proto.Field(
        proto.STRING,
        number=227711026,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetNatMappingInfoRoutersRequest(proto.Message):
    r"""A request message for Routers.GetNatMappingInfo. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        router (str):
            Name of the Router resource to query for Nat
            Mapping information of VM endpoints.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    router: str = proto.Field(
        proto.STRING,
        number=148608841,
    )


class GetNetworkAttachmentRequest(proto.Message):
    r"""A request message for NetworkAttachments.Get. See the method
    description for details.

    Attributes:
        network_attachment (str):
            Name of the NetworkAttachment resource to
            return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region of this request.
    """

    network_attachment: str = proto.Field(
        proto.STRING,
        number=224644052,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetNetworkEdgeSecurityServiceRequest(proto.Message):
    r"""A request message for NetworkEdgeSecurityServices.Get. See
    the method description for details.

    Attributes:
        network_edge_security_service (str):
            Name of the network edge security service to
            get.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    network_edge_security_service: str = proto.Field(
        proto.STRING,
        number=157011879,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for NetworkEndpointGroups.Get. See the
    method description for details.

    Attributes:
        network_endpoint_group (str):
            The name of the network endpoint group. It
            should comply with RFC1035.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone where the network
            endpoint group is located. It should comply with
            RFC1035.
    """

    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.Get. See the
    method description for details.

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to get.
        project (str):
            Project ID for this request.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetNetworkRequest(proto.Message):
    r"""A request message for Networks.Get. See the method
    description for details.

    Attributes:
        network (str):
            Name of the network to return.
        project (str):
            Project ID for this request.
    """

    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.Get. See the method
    description for details.

    Attributes:
        node_group (str):
            Name of the node group to return.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    node_group: str = proto.Field(
        proto.STRING,
        number=469958146,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetNodeTemplateRequest(proto.Message):
    r"""A request message for NodeTemplates.Get. See the method
    description for details.

    Attributes:
        node_template (str):
            Name of the node template to return.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
    """

    node_template: str = proto.Field(
        proto.STRING,
        number=323154455,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetNodeTypeRequest(proto.Message):
    r"""A request message for NodeTypes.Get. See the method
    description for details.

    Attributes:
        node_type (str):
            Name of the node type to return.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    node_type: str = proto.Field(
        proto.STRING,
        number=465832791,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetPacketMirroringRequest(proto.Message):
    r"""A request message for PacketMirrorings.Get. See the method
    description for details.

    Attributes:
        packet_mirroring (str):
            Name of the PacketMirroring resource to
            return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
    """

    packet_mirroring: str = proto.Field(
        proto.STRING,
        number=22305996,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetProjectRequest(proto.Message):
    r"""A request message for Projects.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetPublicAdvertisedPrefixeRequest(proto.Message):
    r"""A request message for PublicAdvertisedPrefixes.Get. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        public_advertised_prefix (str):
            Name of the PublicAdvertisedPrefix resource
            to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_advertised_prefix: str = proto.Field(
        proto.STRING,
        number=101874590,
    )


class GetPublicDelegatedPrefixeRequest(proto.Message):
    r"""A request message for PublicDelegatedPrefixes.Get. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        public_delegated_prefix (str):
            Name of the PublicDelegatedPrefix resource to
            return.
        region (str):
            Name of the region of this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_delegated_prefix: str = proto.Field(
        proto.STRING,
        number=204238440,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionAutoscalerRequest(proto.Message):
    r"""A request message for RegionAutoscalers.Get. See the method
    description for details.

    Attributes:
        autoscaler (str):
            Name of the autoscaler to return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    autoscaler: str = proto.Field(
        proto.STRING,
        number=517258967,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionBackendServiceRequest(proto.Message):
    r"""A request message for RegionBackendServices.Get. See the
    method description for details.

    Attributes:
        backend_service (str):
            Name of the BackendService resource to
            return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionCommitmentRequest(proto.Message):
    r"""A request message for RegionCommitments.Get. See the method
    description for details.

    Attributes:
        commitment (str):
            Name of the commitment to return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
    """

    commitment: str = proto.Field(
        proto.STRING,
        number=482134805,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.Get. See the method
    description for details.

    Attributes:
        disk (str):
            Name of the regional persistent disk to
            return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionDiskTypeRequest(proto.Message):
    r"""A request message for RegionDiskTypes.Get. See the method
    description for details.

    Attributes:
        disk_type (str):
            Name of the disk type to return.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
    """

    disk_type: str = proto.Field(
        proto.STRING,
        number=93009052,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionHealthCheckRequest(proto.Message):
    r"""A request message for RegionHealthChecks.Get. See the method
    description for details.

    Attributes:
        health_check (str):
            Name of the HealthCheck resource to return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionHealthCheckServiceRequest(proto.Message):
    r"""A request message for RegionHealthCheckServices.Get. See the
    method description for details.

    Attributes:
        health_check_service (str):
            Name of the HealthCheckService to update. The
            name must be 1-63 characters long, and comply
            with RFC1035.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    health_check_service: str = proto.Field(
        proto.STRING,
        number=408374747,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for RegionInstanceGroupManagers.Get. See
    the method description for details.

    Attributes:
        instance_group_manager (str):
            Name of the managed instance group to return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionInstanceGroupRequest(proto.Message):
    r"""A request message for RegionInstanceGroups.Get. See the
    method description for details.

    Attributes:
        instance_group (str):
            Name of the instance group resource to
            return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionInstanceTemplateRequest(proto.Message):
    r"""A request message for RegionInstanceTemplates.Get. See the
    method description for details.

    Attributes:
        instance_template (str):
            The name of the instance template.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
    """

    instance_template: str = proto.Field(
        proto.STRING,
        number=309248228,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for RegionNetworkEndpointGroups.Get. See
    the method description for details.

    Attributes:
        network_endpoint_group (str):
            The name of the network endpoint group. It
            should comply with RFC1035.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region where the network
            endpoint group is located. It should comply with
            RFC1035.
    """

    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for RegionNetworkFirewallPolicies.Get. See
    the method description for details.

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to get.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionNotificationEndpointRequest(proto.Message):
    r"""A request message for RegionNotificationEndpoints.Get. See
    the method description for details.

    Attributes:
        notification_endpoint (str):
            Name of the NotificationEndpoint resource to
            return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    notification_endpoint: str = proto.Field(
        proto.STRING,
        number=376807017,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionOperationRequest(proto.Message):
    r"""A request message for RegionOperations.Get. See the method
    description for details.

    Attributes:
        operation (str):
            Name of the Operations resource to return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionRequest(proto.Message):
    r"""A request message for Regions.Get. See the method description
    for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRegionSecurityPolicyRequest(proto.Message):
    r"""A request message for RegionSecurityPolicies.Get. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        security_policy (str):
            Name of the security policy to get.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )


class GetRegionSslCertificateRequest(proto.Message):
    r"""A request message for RegionSslCertificates.Get. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        ssl_certificate (str):
            Name of the SslCertificate resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    ssl_certificate: str = proto.Field(
        proto.STRING,
        number=46443492,
    )


class GetRegionSslPolicyRequest(proto.Message):
    r"""A request message for RegionSslPolicies.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        ssl_policy (str):
            Name of the SSL policy to update. The name
            must be 1-63 characters long, and comply with
            RFC1035.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    ssl_policy: str = proto.Field(
        proto.STRING,
        number=295190213,
    )


class GetRegionTargetHttpProxyRequest(proto.Message):
    r"""A request message for RegionTargetHttpProxies.Get. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        target_http_proxy (str):
            Name of the TargetHttpProxy resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    target_http_proxy: str = proto.Field(
        proto.STRING,
        number=206872421,
    )


class GetRegionTargetHttpsProxyRequest(proto.Message):
    r"""A request message for RegionTargetHttpsProxies.Get. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )


class GetRegionTargetTcpProxyRequest(proto.Message):
    r"""A request message for RegionTargetTcpProxies.Get. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        target_tcp_proxy (str):
            Name of the TargetTcpProxy resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    target_tcp_proxy: str = proto.Field(
        proto.STRING,
        number=503065442,
    )


class GetRegionUrlMapRequest(proto.Message):
    r"""A request message for RegionUrlMaps.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        url_map (str):
            Name of the UrlMap resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )


class GetReservationRequest(proto.Message):
    r"""A request message for Reservations.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        reservation (str):
            Name of the reservation to retrieve.
        zone (str):
            Name of the zone for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    reservation: str = proto.Field(
        proto.STRING,
        number=47530956,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetResourcePolicyRequest(proto.Message):
    r"""A request message for ResourcePolicies.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        resource_policy (str):
            Name of the resource policy to retrieve.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource_policy: str = proto.Field(
        proto.STRING,
        number=159240835,
    )


class GetRouteRequest(proto.Message):
    r"""A request message for Routes.Get. See the method description
    for details.

    Attributes:
        project (str):
            Project ID for this request.
        route (str):
            Name of the Route resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    route: str = proto.Field(
        proto.STRING,
        number=108704329,
    )


class GetRouterRequest(proto.Message):
    r"""A request message for Routers.Get. See the method description
    for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        router (str):
            Name of the Router resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    router: str = proto.Field(
        proto.STRING,
        number=148608841,
    )


class GetRouterStatusRouterRequest(proto.Message):
    r"""A request message for Routers.GetRouterStatus. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        router (str):
            Name of the Router resource to query.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    router: str = proto.Field(
        proto.STRING,
        number=148608841,
    )


class GetRuleFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.GetRule. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to which the
            queried rule belongs.
        priority (int):
            The priority of the rule to get from the
            firewall policy.

            This field is a member of `oneof`_ ``_priority``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )


class GetRuleNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.GetRule. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to which the
            queried rule belongs.
        priority (int):
            The priority of the rule to get from the
            firewall policy.

            This field is a member of `oneof`_ ``_priority``.
        project (str):
            Project ID for this request.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetRuleRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for RegionNetworkFirewallPolicies.GetRule.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to which the
            queried rule belongs.
        priority (int):
            The priority of the rule to get from the
            firewall policy.

            This field is a member of `oneof`_ ``_priority``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class GetRuleSecurityPolicyRequest(proto.Message):
    r"""A request message for SecurityPolicies.GetRule. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        priority (int):
            The priority of the rule to get from the
            security policy.

            This field is a member of `oneof`_ ``_priority``.
        project (str):
            Project ID for this request.
        security_policy (str):
            Name of the security policy to which the
            queried rule belongs.
    """

    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )


class GetScreenshotInstanceRequest(proto.Message):
    r"""A request message for Instances.GetScreenshot. See the method
    description for details.

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetSecurityPolicyRequest(proto.Message):
    r"""A request message for SecurityPolicies.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        security_policy (str):
            Name of the security policy to get.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )


class GetSerialPortOutputInstanceRequest(proto.Message):
    r"""A request message for Instances.GetSerialPortOutput. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance for this request.
        port (int):
            Specifies which COM or serial port to
            retrieve data from.

            This field is a member of `oneof`_ ``_port``.
        project (str):
            Project ID for this request.
        start (int):
            Specifies the starting byte position of the output to
            return. To start with the first byte of output to the
            specified port, omit this field or set it to ``0``. If the
            output for that byte position is available, this field
            matches the ``start`` parameter sent with the request. If
            the amount of serial console output exceeds the size of the
            buffer (1 MB), the oldest output is discarded and is no
            longer available. If the requested start position refers to
            discarded output, the start position is adjusted to the
            oldest output still available, and the adjusted start
            position is returned as the ``start`` property value. You
            can also provide a negative start position, which translates
            to the most recent number of bytes written to the serial
            port. For example, -3 is interpreted as the most recent 3
            bytes written to the serial console.

            This field is a member of `oneof`_ ``_start``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    start: int = proto.Field(
        proto.INT64,
        number=109757538,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetServiceAttachmentRequest(proto.Message):
    r"""A request message for ServiceAttachments.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region of this request.
        service_attachment (str):
            Name of the ServiceAttachment resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    service_attachment: str = proto.Field(
        proto.STRING,
        number=338957549,
    )


class GetShieldedInstanceIdentityInstanceRequest(proto.Message):
    r"""A request message for Instances.GetShieldedInstanceIdentity.
    See the method description for details.

    Attributes:
        instance (str):
            Name or id of the instance scoping this
            request.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetSnapshotRequest(proto.Message):
    r"""A request message for Snapshots.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        snapshot (str):
            Name of the Snapshot resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    snapshot: str = proto.Field(
        proto.STRING,
        number=284874180,
    )


class GetSslCertificateRequest(proto.Message):
    r"""A request message for SslCertificates.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        ssl_certificate (str):
            Name of the SslCertificate resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    ssl_certificate: str = proto.Field(
        proto.STRING,
        number=46443492,
    )


class GetSslPolicyRequest(proto.Message):
    r"""A request message for SslPolicies.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        ssl_policy (str):
            Name of the SSL policy to update. The name
            must be 1-63 characters long, and comply with
            RFC1035.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    ssl_policy: str = proto.Field(
        proto.STRING,
        number=295190213,
    )


class GetStatusVpnGatewayRequest(proto.Message):
    r"""A request message for VpnGateways.GetStatus. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        vpn_gateway (str):
            Name of the VPN gateway to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    vpn_gateway: str = proto.Field(
        proto.STRING,
        number=406684153,
    )


class GetSubnetworkRequest(proto.Message):
    r"""A request message for Subnetworks.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        subnetwork (str):
            Name of the Subnetwork resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
    )


class GetTargetGrpcProxyRequest(proto.Message):
    r"""A request message for TargetGrpcProxies.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        target_grpc_proxy (str):
            Name of the TargetGrpcProxy resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    target_grpc_proxy: str = proto.Field(
        proto.STRING,
        number=5020283,
    )


class GetTargetHttpProxyRequest(proto.Message):
    r"""A request message for TargetHttpProxies.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        target_http_proxy (str):
            Name of the TargetHttpProxy resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    target_http_proxy: str = proto.Field(
        proto.STRING,
        number=206872421,
    )


class GetTargetHttpsProxyRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )


class GetTargetInstanceRequest(proto.Message):
    r"""A request message for TargetInstances.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        target_instance (str):
            Name of the TargetInstance resource to
            return.
        zone (str):
            Name of the zone scoping this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    target_instance: str = proto.Field(
        proto.STRING,
        number=289769347,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetTargetPoolRequest(proto.Message):
    r"""A request message for TargetPools.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        target_pool (str):
            Name of the TargetPool resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    target_pool: str = proto.Field(
        proto.STRING,
        number=62796298,
    )


class GetTargetSslProxyRequest(proto.Message):
    r"""A request message for TargetSslProxies.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        target_ssl_proxy (str):
            Name of the TargetSslProxy resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    target_ssl_proxy: str = proto.Field(
        proto.STRING,
        number=338795853,
    )


class GetTargetTcpProxyRequest(proto.Message):
    r"""A request message for TargetTcpProxies.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        target_tcp_proxy (str):
            Name of the TargetTcpProxy resource to
            return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    target_tcp_proxy: str = proto.Field(
        proto.STRING,
        number=503065442,
    )


class GetTargetVpnGatewayRequest(proto.Message):
    r"""A request message for TargetVpnGateways.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        target_vpn_gateway (str):
            Name of the target VPN gateway to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    target_vpn_gateway: str = proto.Field(
        proto.STRING,
        number=532512843,
    )


class GetUrlMapRequest(proto.Message):
    r"""A request message for UrlMaps.Get. See the method description
    for details.

    Attributes:
        project (str):
            Project ID for this request.
        url_map (str):
            Name of the UrlMap resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )


class GetVpnGatewayRequest(proto.Message):
    r"""A request message for VpnGateways.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        vpn_gateway (str):
            Name of the VPN gateway to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    vpn_gateway: str = proto.Field(
        proto.STRING,
        number=406684153,
    )


class GetVpnTunnelRequest(proto.Message):
    r"""A request message for VpnTunnels.Get. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        vpn_tunnel (str):
            Name of the VpnTunnel resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    vpn_tunnel: str = proto.Field(
        proto.STRING,
        number=143821331,
    )


class GetXpnHostProjectRequest(proto.Message):
    r"""A request message for Projects.GetXpnHost. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class GetXpnResourcesProjectsRequest(proto.Message):
    r"""A request message for Projects.GetXpnResources. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class GetZoneOperationRequest(proto.Message):
    r"""A request message for ZoneOperations.Get. See the method
    description for details.

    Attributes:
        operation (str):
            Name of the Operations resource to return.
        project (str):
            Project ID for this request.
        zone (str):
            Name of the zone for this request.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GetZoneRequest(proto.Message):
    r"""A request message for Zones.Get. See the method description
    for details.

    Attributes:
        project (str):
            Project ID for this request.
        zone (str):
            Name of the zone resource to return.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class GlobalNetworkEndpointGroupsAttachEndpointsRequest(proto.Message):
    r"""

    Attributes:
        network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]):
            The list of network endpoints to be attached.
    """

    network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField(
        proto.MESSAGE,
        number=149850285,
        message="NetworkEndpoint",
    )


class GlobalNetworkEndpointGroupsDetachEndpointsRequest(proto.Message):
    r"""

    Attributes:
        network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]):
            The list of network endpoints to be detached.
    """

    network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField(
        proto.MESSAGE,
        number=149850285,
        message="NetworkEndpoint",
    )


class GlobalOrganizationSetPolicyRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bindings (MutableSequence[google.cloud.compute_v1.types.Binding]):
            Flatten Policy to create a backward
            compatible wire-format. Deprecated. Use 'policy'
            to specify bindings.
        etag (str):
            Flatten Policy to create a backward
            compatible wire-format. Deprecated. Use 'policy'
            to specify the etag.

            This field is a member of `oneof`_ ``_etag``.
        policy (google.cloud.compute_v1.types.Policy):
            REQUIRED: The complete policy to be applied
            to the 'resource'. The size of the policy is
            limited to a few 10s of KB. An empty policy is
            in general a valid policy but certain services
            (like Projects) might reject them.

            This field is a member of `oneof`_ ``_policy``.
    """

    bindings: MutableSequence["Binding"] = proto.RepeatedField(
        proto.MESSAGE,
        number=403251854,
        message="Binding",
    )
    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    policy: "Policy" = proto.Field(
        proto.MESSAGE,
        number=91071794,
        optional=True,
        message="Policy",
    )


class GlobalSetLabelsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        label_fingerprint (str):
            The fingerprint of the previous set of labels
            for this resource, used to detect conflicts. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update labels. You must always provide an
            up-to-date fingerprint hash when updating or
            changing labels, otherwise the request will fail
            with error 412 conditionNotMet. Make a get()
            request to the resource to get the latest
            fingerprint.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            A list of labels to apply for this resource.
            Each label must comply with the requirements for
            labels. For example, "webserver-frontend":
            "images". A label value can also be empty (e.g.
            "my-label": "").
    """

    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )


class GlobalSetPolicyRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bindings (MutableSequence[google.cloud.compute_v1.types.Binding]):
            Flatten Policy to create a backward
            compatible wire-format. Deprecated. Use 'policy'
            to specify bindings.
        etag (str):
            Flatten Policy to create a backward
            compatible wire-format. Deprecated. Use 'policy'
            to specify the etag.

            This field is a member of `oneof`_ ``_etag``.
        policy (google.cloud.compute_v1.types.Policy):
            REQUIRED: The complete policy to be applied
            to the 'resource'. The size of the policy is
            limited to a few 10s of KB. An empty policy is
            in general a valid policy but certain services
            (like Projects) might reject them.

            This field is a member of `oneof`_ ``_policy``.
    """

    bindings: MutableSequence["Binding"] = proto.RepeatedField(
        proto.MESSAGE,
        number=403251854,
        message="Binding",
    )
    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    policy: "Policy" = proto.Field(
        proto.MESSAGE,
        number=91071794,
        optional=True,
        message="Policy",
    )


class GuestAttributes(proto.Message):
    r"""A guest attributes entry.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        kind (str):
            [Output Only] Type of the resource. Always
            compute#guestAttributes for guest attributes entry.

            This field is a member of `oneof`_ ``_kind``.
        query_path (str):
            The path to be queried. This can be the
            default namespace ('') or a nested namespace
            ('\/') or a specified key ('\/\').

            This field is a member of `oneof`_ ``_query_path``.
        query_value (google.cloud.compute_v1.types.GuestAttributesValue):
            [Output Only] The value of the requested queried path.

            This field is a member of `oneof`_ ``_query_value``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        variable_key (str):
            The key to search for.

            This field is a member of `oneof`_ ``_variable_key``.
        variable_value (str):
            [Output Only] The value found for the requested key.

            This field is a member of `oneof`_ ``_variable_value``.
    """

    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    query_path: str = proto.Field(
        proto.STRING,
        number=368591164,
        optional=True,
    )
    query_value: "GuestAttributesValue" = proto.Field(
        proto.MESSAGE,
        number=157570874,
        optional=True,
        message="GuestAttributesValue",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    variable_key: str = proto.Field(
        proto.STRING,
        number=164364828,
        optional=True,
    )
    variable_value: str = proto.Field(
        proto.STRING,
        number=124582382,
        optional=True,
    )


class GuestAttributesEntry(proto.Message):
    r"""A guest attributes namespace/key/value entry.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        key (str):
            Key for the guest attribute entry.

            This field is a member of `oneof`_ ``_key``.
        namespace (str):
            Namespace for the guest attribute entry.

            This field is a member of `oneof`_ ``_namespace``.
        value (str):
            Value for the guest attribute entry.

            This field is a member of `oneof`_ ``_value``.
    """

    key: str = proto.Field(
        proto.STRING,
        number=106079,
        optional=True,
    )
    namespace: str = proto.Field(
        proto.STRING,
        number=178476379,
        optional=True,
    )
    value: str = proto.Field(
        proto.STRING,
        number=111972721,
        optional=True,
    )


class GuestAttributesValue(proto.Message):
    r"""Array of guest attribute namespace/key/value tuples.

    Attributes:
        items (MutableSequence[google.cloud.compute_v1.types.GuestAttributesEntry]):

    """

    items: MutableSequence["GuestAttributesEntry"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="GuestAttributesEntry",
    )


class GuestOsFeature(proto.Message):
    r"""Guest OS features.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        type_ (str):
            The ID of a supported feature. To add multiple values, use
            commas to separate values. Set to one or more of the
            following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS -
            MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE -
            SUSPEND_RESUME_COMPATIBLE - SEV_SNP_CAPABLE - TDX_CAPABLE
            For more information, see Enabling guest operating system
            features. Check the Type enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""The ID of a supported feature. To add multiple values, use commas to
        separate values. Set to one or more of the following values: -
        VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE
        - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_SNP_CAPABLE
        - TDX_CAPABLE For more information, see Enabling guest operating
        system features.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            FEATURE_TYPE_UNSPECIFIED (531767259):
                No description available.
            GVNIC (68209305):
                No description available.
            MULTI_IP_SUBNET (151776719):
                No description available.
            SECURE_BOOT (376811194):
                No description available.
            SEV_CAPABLE (87083793):
                No description available.
            SEV_LIVE_MIGRATABLE (392039820):
                No description available.
            SEV_SNP_CAPABLE (426919):
                No description available.
            UEFI_COMPATIBLE (195865408):
                No description available.
            VIRTIO_SCSI_MULTIQUEUE (201597069):
                No description available.
            WINDOWS (456863331):
                No description available.
        """
        UNDEFINED_TYPE = 0
        FEATURE_TYPE_UNSPECIFIED = 531767259
        GVNIC = 68209305
        MULTI_IP_SUBNET = 151776719
        SECURE_BOOT = 376811194
        SEV_CAPABLE = 87083793
        SEV_LIVE_MIGRATABLE = 392039820
        SEV_SNP_CAPABLE = 426919
        UEFI_COMPATIBLE = 195865408
        VIRTIO_SCSI_MULTIQUEUE = 201597069
        WINDOWS = 456863331

    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class HTTP2HealthCheck(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        host (str):
            The value of the host header in the HTTP/2
            health check request. If left empty (default
            value), the host header is set to the
            destination IP address to which health check
            packets are sent. The destination IP address
            depends on the type of load balancer. For
            details, see:
            https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest

            This field is a member of `oneof`_ ``_host``.
        port (int):
            The TCP port number to which the health check
            prober sends packets. The default value is 443.
            Valid values are 1 through 65535.

            This field is a member of `oneof`_ ``_port``.
        port_name (str):
            Not supported.

            This field is a member of `oneof`_ ``_port_name``.
        port_specification (str):
            Specifies how a port is selected for health checking. Can be
            one of the following values: USE_FIXED_PORT: Specifies a
            port number explicitly using the port field in the health
            check. Supported by backend services for pass-through load
            balancers and backend services for proxy load balancers. Not
            supported by target pools. The health check supports all
            backends supported by the backend service provided the
            backend can be health checked. For example, GCE_VM_IP
            network endpoint groups, GCE_VM_IP_PORT network endpoint
            groups, and instance group backends. USE_NAMED_PORT: Not
            supported. USE_SERVING_PORT: Provides an indirect method of
            specifying the health check port by referring to the backend
            service. Only supported by backend services for proxy load
            balancers. Not supported by target pools. Not supported by
            backend services for pass-through load balancers. Supports
            all backends that can be health checked; for example,
            GCE_VM_IP_PORT network endpoint groups and instance group
            backends. For GCE_VM_IP_PORT network endpoint group
            backends, the health check uses the port number specified
            for each endpoint in the network endpoint group. For
            instance group backends, the health check uses the port
            number determined by looking up the backend service's named
            port in the instance group's list of named ports. Check the
            PortSpecification enum for the list of possible values.

            This field is a member of `oneof`_ ``_port_specification``.
        proxy_header (str):
            Specifies the type of proxy header to append before sending
            data to the backend, either NONE or PROXY_V1. The default is
            NONE. Check the ProxyHeader enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_proxy_header``.
        request_path (str):
            The request path of the HTTP/2 health check
            request. The default value is /.

            This field is a member of `oneof`_ ``_request_path``.
        response (str):
            Creates a content-based HTTP/2 health check.
            In addition to the required HTTP 200 (OK) status
            code, you can configure the health check to pass
            only when the backend sends this specific ASCII
            response string within the first 1024 bytes of
            the HTTP response body. For details, see:
            https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http

            This field is a member of `oneof`_ ``_response``.
    """

    class PortSpecification(proto.Enum):
        r"""Specifies how a port is selected for health checking. Can be one of
        the following values: USE_FIXED_PORT: Specifies a port number
        explicitly using the port field in the health check. Supported by
        backend services for pass-through load balancers and backend
        services for proxy load balancers. Not supported by target pools.
        The health check supports all backends supported by the backend
        service provided the backend can be health checked. For example,
        GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint
        groups, and instance group backends. USE_NAMED_PORT: Not supported.
        USE_SERVING_PORT: Provides an indirect method of specifying the
        health check port by referring to the backend service. Only
        supported by backend services for proxy load balancers. Not
        supported by target pools. Not supported by backend services for
        pass-through load balancers. Supports all backends that can be
        health checked; for example, GCE_VM_IP_PORT network endpoint groups
        and instance group backends. For GCE_VM_IP_PORT network endpoint
        group backends, the health check uses the port number specified for
        each endpoint in the network endpoint group. For instance group
        backends, the health check uses the port number determined by
        looking up the backend service's named port in the instance group's
        list of named ports.

        Values:
            UNDEFINED_PORT_SPECIFICATION (0):
                A value indicating that the enum field is not
                set.
            USE_FIXED_PORT (190235748):
                The port number in the health check's port is
                used for health checking. Applies to network
                endpoint group and instance group backends.
            USE_NAMED_PORT (349300671):
                Not supported.
            USE_SERVING_PORT (362637516):
                For network endpoint group backends, the
                health check uses the port number specified on
                each endpoint in the network endpoint group. For
                instance group backends, the health check uses
                the port number specified for the backend
                service's named port defined in the instance
                group's named ports.
        """
        UNDEFINED_PORT_SPECIFICATION = 0
        USE_FIXED_PORT = 190235748
        USE_NAMED_PORT = 349300671
        USE_SERVING_PORT = 362637516

    class ProxyHeader(proto.Enum):
        r"""Specifies the type of proxy header to append before sending data to
        the backend, either NONE or PROXY_V1. The default is NONE.

        Values:
            UNDEFINED_PROXY_HEADER (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No description available.
            PROXY_V1 (334352940):
                No description available.
        """
        UNDEFINED_PROXY_HEADER = 0
        NONE = 2402104
        PROXY_V1 = 334352940

    host: str = proto.Field(
        proto.STRING,
        number=3208616,
        optional=True,
    )
    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )
    port_name: str = proto.Field(
        proto.STRING,
        number=41534345,
        optional=True,
    )
    port_specification: str = proto.Field(
        proto.STRING,
        number=51590597,
        optional=True,
    )
    proxy_header: str = proto.Field(
        proto.STRING,
        number=160374142,
        optional=True,
    )
    request_path: str = proto.Field(
        proto.STRING,
        number=229403605,
        optional=True,
    )
    response: str = proto.Field(
        proto.STRING,
        number=196547649,
        optional=True,
    )


class HTTPHealthCheck(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        host (str):
            The value of the host header in the HTTP
            health check request. If left empty (default
            value), the host header is set to the
            destination IP address to which health check
            packets are sent. The destination IP address
            depends on the type of load balancer. For
            details, see:
            https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest

            This field is a member of `oneof`_ ``_host``.
        port (int):
            The TCP port number to which the health check
            prober sends packets. The default value is 80.
            Valid values are 1 through 65535.

            This field is a member of `oneof`_ ``_port``.
        port_name (str):
            Not supported.

            This field is a member of `oneof`_ ``_port_name``.
        port_specification (str):
            Specifies how a port is selected for health checking. Can be
            one of the following values: USE_FIXED_PORT: Specifies a
            port number explicitly using the port field in the health
            check. Supported by backend services for pass-through load
            balancers and backend services for proxy load balancers.
            Also supported in legacy HTTP health checks for target
            pools. The health check supports all backends supported by
            the backend service provided the backend can be health
            checked. For example, GCE_VM_IP network endpoint groups,
            GCE_VM_IP_PORT network endpoint groups, and instance group
            backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT:
            Provides an indirect method of specifying the health check
            port by referring to the backend service. Only supported by
            backend services for proxy load balancers. Not supported by
            target pools. Not supported by backend services for
            pass-through load balancers. Supports all backends that can
            be health checked; for example, GCE_VM_IP_PORT network
            endpoint groups and instance group backends. For
            GCE_VM_IP_PORT network endpoint group backends, the health
            check uses the port number specified for each endpoint in
            the network endpoint group. For instance group backends, the
            health check uses the port number determined by looking up
            the backend service's named port in the instance group's
            list of named ports. Check the PortSpecification enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_port_specification``.
        proxy_header (str):
            Specifies the type of proxy header to append before sending
            data to the backend, either NONE or PROXY_V1. The default is
            NONE. Check the ProxyHeader enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_proxy_header``.
        request_path (str):
            The request path of the HTTP health check
            request. The default value is /.

            This field is a member of `oneof`_ ``_request_path``.
        response (str):
            Creates a content-based HTTP health check. In
            addition to the required HTTP 200 (OK) status
            code, you can configure the health check to pass
            only when the backend sends this specific ASCII
            response string within the first 1024 bytes of
            the HTTP response body. For details, see:
            https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http

            This field is a member of `oneof`_ ``_response``.
    """

    class PortSpecification(proto.Enum):
        r"""Specifies how a port is selected for health checking. Can be one of
        the following values: USE_FIXED_PORT: Specifies a port number
        explicitly using the port field in the health check. Supported by
        backend services for pass-through load balancers and backend
        services for proxy load balancers. Also supported in legacy HTTP
        health checks for target pools. The health check supports all
        backends supported by the backend service provided the backend can
        be health checked. For example, GCE_VM_IP network endpoint groups,
        GCE_VM_IP_PORT network endpoint groups, and instance group backends.
        USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an
        indirect method of specifying the health check port by referring to
        the backend service. Only supported by backend services for proxy
        load balancers. Not supported by target pools. Not supported by
        backend services for pass-through load balancers. Supports all
        backends that can be health checked; for example, GCE_VM_IP_PORT
        network endpoint groups and instance group backends. For
        GCE_VM_IP_PORT network endpoint group backends, the health check
        uses the port number specified for each endpoint in the network
        endpoint group. For instance group backends, the health check uses
        the port number determined by looking up the backend service's named
        port in the instance group's list of named ports.

        Values:
            UNDEFINED_PORT_SPECIFICATION (0):
                A value indicating that the enum field is not
                set.
            USE_FIXED_PORT (190235748):
                The port number in the health check's port is
                used for health checking. Applies to network
                endpoint group and instance group backends.
            USE_NAMED_PORT (349300671):
                Not supported.
            USE_SERVING_PORT (362637516):
                For network endpoint group backends, the
                health check uses the port number specified on
                each endpoint in the network endpoint group. For
                instance group backends, the health check uses
                the port number specified for the backend
                service's named port defined in the instance
                group's named ports.
        """
        UNDEFINED_PORT_SPECIFICATION = 0
        USE_FIXED_PORT = 190235748
        USE_NAMED_PORT = 349300671
        USE_SERVING_PORT = 362637516

    class ProxyHeader(proto.Enum):
        r"""Specifies the type of proxy header to append before sending data to
        the backend, either NONE or PROXY_V1. The default is NONE.

        Values:
            UNDEFINED_PROXY_HEADER (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No description available.
            PROXY_V1 (334352940):
                No description available.
        """
        UNDEFINED_PROXY_HEADER = 0
        NONE = 2402104
        PROXY_V1 = 334352940

    host: str = proto.Field(
        proto.STRING,
        number=3208616,
        optional=True,
    )
    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )
    port_name: str = proto.Field(
        proto.STRING,
        number=41534345,
        optional=True,
    )
    port_specification: str = proto.Field(
        proto.STRING,
        number=51590597,
        optional=True,
    )
    proxy_header: str = proto.Field(
        proto.STRING,
        number=160374142,
        optional=True,
    )
    request_path: str = proto.Field(
        proto.STRING,
        number=229403605,
        optional=True,
    )
    response: str = proto.Field(
        proto.STRING,
        number=196547649,
        optional=True,
    )


class HTTPSHealthCheck(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        host (str):
            The value of the host header in the HTTPS
            health check request. If left empty (default
            value), the host header is set to the
            destination IP address to which health check
            packets are sent. The destination IP address
            depends on the type of load balancer. For
            details, see:
            https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest

            This field is a member of `oneof`_ ``_host``.
        port (int):
            The TCP port number to which the health check
            prober sends packets. The default value is 443.
            Valid values are 1 through 65535.

            This field is a member of `oneof`_ ``_port``.
        port_name (str):
            Not supported.

            This field is a member of `oneof`_ ``_port_name``.
        port_specification (str):
            Specifies how a port is selected for health checking. Can be
            one of the following values: USE_FIXED_PORT: Specifies a
            port number explicitly using the port field in the health
            check. Supported by backend services for pass-through load
            balancers and backend services for proxy load balancers. Not
            supported by target pools. The health check supports all
            backends supported by the backend service provided the
            backend can be health checked. For example, GCE_VM_IP
            network endpoint groups, GCE_VM_IP_PORT network endpoint
            groups, and instance group backends. USE_NAMED_PORT: Not
            supported. USE_SERVING_PORT: Provides an indirect method of
            specifying the health check port by referring to the backend
            service. Only supported by backend services for proxy load
            balancers. Not supported by target pools. Not supported by
            backend services for pass-through load balancers. Supports
            all backends that can be health checked; for example,
            GCE_VM_IP_PORT network endpoint groups and instance group
            backends. For GCE_VM_IP_PORT network endpoint group
            backends, the health check uses the port number specified
            for each endpoint in the network endpoint group. For
            instance group backends, the health check uses the port
            number determined by looking up the backend service's named
            port in the instance group's list of named ports. Check the
            PortSpecification enum for the list of possible values.

            This field is a member of `oneof`_ ``_port_specification``.
        proxy_header (str):
            Specifies the type of proxy header to append before sending
            data to the backend, either NONE or PROXY_V1. The default is
            NONE. Check the ProxyHeader enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_proxy_header``.
        request_path (str):
            The request path of the HTTPS health check
            request. The default value is /.

            This field is a member of `oneof`_ ``_request_path``.
        response (str):
            Creates a content-based HTTPS health check.
            In addition to the required HTTP 200 (OK) status
            code, you can configure the health check to pass
            only when the backend sends this specific ASCII
            response string within the first 1024 bytes of
            the HTTP response body. For details, see:
            https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http

            This field is a member of `oneof`_ ``_response``.
    """

    class PortSpecification(proto.Enum):
        r"""Specifies how a port is selected for health checking. Can be one of
        the following values: USE_FIXED_PORT: Specifies a port number
        explicitly using the port field in the health check. Supported by
        backend services for pass-through load balancers and backend
        services for proxy load balancers. Not supported by target pools.
        The health check supports all backends supported by the backend
        service provided the backend can be health checked. For example,
        GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint
        groups, and instance group backends. USE_NAMED_PORT: Not supported.
        USE_SERVING_PORT: Provides an indirect method of specifying the
        health check port by referring to the backend service. Only
        supported by backend services for proxy load balancers. Not
        supported by target pools. Not supported by backend services for
        pass-through load balancers. Supports all backends that can be
        health checked; for example, GCE_VM_IP_PORT network endpoint groups
        and instance group backends. For GCE_VM_IP_PORT network endpoint
        group backends, the health check uses the port number specified for
        each endpoint in the network endpoint group. For instance group
        backends, the health check uses the port number determined by
        looking up the backend service's named port in the instance group's
        list of named ports.

        Values:
            UNDEFINED_PORT_SPECIFICATION (0):
                A value indicating that the enum field is not
                set.
            USE_FIXED_PORT (190235748):
                The port number in the health check's port is
                used for health checking. Applies to network
                endpoint group and instance group backends.
            USE_NAMED_PORT (349300671):
                Not supported.
            USE_SERVING_PORT (362637516):
                For network endpoint group backends, the
                health check uses the port number specified on
                each endpoint in the network endpoint group. For
                instance group backends, the health check uses
                the port number specified for the backend
                service's named port defined in the instance
                group's named ports.
        """
        UNDEFINED_PORT_SPECIFICATION = 0
        USE_FIXED_PORT = 190235748
        USE_NAMED_PORT = 349300671
        USE_SERVING_PORT = 362637516

    class ProxyHeader(proto.Enum):
        r"""Specifies the type of proxy header to append before sending data to
        the backend, either NONE or PROXY_V1. The default is NONE.

        Values:
            UNDEFINED_PROXY_HEADER (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No description available.
            PROXY_V1 (334352940):
                No description available.
        """
        UNDEFINED_PROXY_HEADER = 0
        NONE = 2402104
        PROXY_V1 = 334352940

    host: str = proto.Field(
        proto.STRING,
        number=3208616,
        optional=True,
    )
    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )
    port_name: str = proto.Field(
        proto.STRING,
        number=41534345,
        optional=True,
    )
    port_specification: str = proto.Field(
        proto.STRING,
        number=51590597,
        optional=True,
    )
    proxy_header: str = proto.Field(
        proto.STRING,
        number=160374142,
        optional=True,
    )
    request_path: str = proto.Field(
        proto.STRING,
        number=229403605,
        optional=True,
    )
    response: str = proto.Field(
        proto.STRING,
        number=196547649,
        optional=True,
    )


class HealthCheck(proto.Message):
    r"""Represents a Health Check resource. Google Compute Engine has two
    Health Check resources: \*
    `Global </compute/docs/reference/rest/v1/healthChecks>`__ \*
    `Regional </compute/docs/reference/rest/v1/regionHealthChecks>`__
    Internal HTTP(S) load balancers must use regional health checks
    (``compute.v1.regionHealthChecks``). Traffic Director must use
    global health checks (``compute.v1.HealthChecks``). Internal TCP/UDP
    load balancers can use either regional or global health checks
    (``compute.v1.regionHealthChecks`` or ``compute.v1.HealthChecks``).
    External HTTP(S), TCP proxy, and SSL proxy load balancers as well as
    managed instance group auto-healing must use global health checks
    (``compute.v1.HealthChecks``). Backend service-based network load
    balancers must use regional health checks
    (``compute.v1.regionHealthChecks``). Target pool-based network load
    balancers must use legacy HTTP health checks
    (``compute.v1.httpHealthChecks``). For more information, see Health
    checks overview.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        check_interval_sec (int):
            How often (in seconds) to send a health
            check. The default value is 5 seconds.

            This field is a member of `oneof`_ ``_check_interval_sec``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in 3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        grpc_health_check (google.cloud.compute_v1.types.GRPCHealthCheck):

            This field is a member of `oneof`_ ``_grpc_health_check``.
        healthy_threshold (int):
            A so-far unhealthy instance will be marked
            healthy after this many consecutive successes.
            The default value is 2.

            This field is a member of `oneof`_ ``_healthy_threshold``.
        http2_health_check (google.cloud.compute_v1.types.HTTP2HealthCheck):

            This field is a member of `oneof`_ ``_http2_health_check``.
        http_health_check (google.cloud.compute_v1.types.HTTPHealthCheck):

            This field is a member of `oneof`_ ``_http_health_check``.
        https_health_check (google.cloud.compute_v1.types.HTTPSHealthCheck):

            This field is a member of `oneof`_ ``_https_health_check``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            Type of the resource.

            This field is a member of `oneof`_ ``_kind``.
        log_config (google.cloud.compute_v1.types.HealthCheckLogConfig):
            Configure logging on this health check.

            This field is a member of `oneof`_ ``_log_config``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. For example, a name that is 1-63
            characters long, matches the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?``, and otherwise complies with
            RFC1035. This regular expression describes a name where the
            first character is a lowercase letter, and all following
            characters are a dash, lowercase letter, or digit, except
            the last character, which isn't a dash.

            This field is a member of `oneof`_ ``_name``.
        region (str):
            [Output Only] Region where the health check resides. Not
            applicable to global health checks.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        ssl_health_check (google.cloud.compute_v1.types.SSLHealthCheck):

            This field is a member of `oneof`_ ``_ssl_health_check``.
        tcp_health_check (google.cloud.compute_v1.types.TCPHealthCheck):

            This field is a member of `oneof`_ ``_tcp_health_check``.
        timeout_sec (int):
            How long (in seconds) to wait before claiming
            failure. The default value is 5 seconds. It is
            invalid for timeoutSec to have greater value
            than checkIntervalSec.

            This field is a member of `oneof`_ ``_timeout_sec``.
        type_ (str):
            Specifies the type of the healthCheck, either
            TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly
            one of the protocol-specific health check fields
            must be specified, which must match type field.
            Check the Type enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_type``.
        unhealthy_threshold (int):
            A so-far healthy instance will be marked
            unhealthy after this many consecutive failures.
            The default value is 2.

            This field is a member of `oneof`_ ``_unhealthy_threshold``.
    """

    class Type(proto.Enum):
        r"""Specifies the type of the healthCheck, either TCP, SSL, HTTP,
        HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific
        health check fields must be specified, which must match type
        field.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            GRPC (2196510):
                No description available.
            HTTP (2228360):
                No description available.
            HTTP2 (69079210):
                No description available.
            HTTPS (69079243):
                No description available.
            INVALID (530283991):
                No description available.
            SSL (82412):
                No description available.
            TCP (82881):
                No description available.
        """
        UNDEFINED_TYPE = 0
        GRPC = 2196510
        HTTP = 2228360
        HTTP2 = 69079210
        HTTPS = 69079243
        INVALID = 530283991
        SSL = 82412
        TCP = 82881

    check_interval_sec: int = proto.Field(
        proto.INT32,
        number=345561006,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    grpc_health_check: "GRPCHealthCheck" = proto.Field(
        proto.MESSAGE,
        number=85529574,
        optional=True,
        message="GRPCHealthCheck",
    )
    healthy_threshold: int = proto.Field(
        proto.INT32,
        number=403212361,
        optional=True,
    )
    http2_health_check: "HTTP2HealthCheck" = proto.Field(
        proto.MESSAGE,
        number=11360986,
        optional=True,
        message="HTTP2HealthCheck",
    )
    http_health_check: "HTTPHealthCheck" = proto.Field(
        proto.MESSAGE,
        number=412586940,
        optional=True,
        message="HTTPHealthCheck",
    )
    https_health_check: "HTTPSHealthCheck" = proto.Field(
        proto.MESSAGE,
        number=436046905,
        optional=True,
        message="HTTPSHealthCheck",
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    log_config: "HealthCheckLogConfig" = proto.Field(
        proto.MESSAGE,
        number=351299741,
        optional=True,
        message="HealthCheckLogConfig",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    ssl_health_check: "SSLHealthCheck" = proto.Field(
        proto.MESSAGE,
        number=280032440,
        optional=True,
        message="SSLHealthCheck",
    )
    tcp_health_check: "TCPHealthCheck" = proto.Field(
        proto.MESSAGE,
        number=469980419,
        optional=True,
        message="TCPHealthCheck",
    )
    timeout_sec: int = proto.Field(
        proto.INT32,
        number=79994995,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )
    unhealthy_threshold: int = proto.Field(
        proto.INT32,
        number=227958480,
        optional=True,
    )


class HealthCheckList(proto.Message):
    r"""Contains a list of HealthCheck resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.HealthCheck]):
            A list of HealthCheck resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["HealthCheck"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="HealthCheck",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class HealthCheckLogConfig(proto.Message):
    r"""Configuration of logging on a health check. If logging is
    enabled, logs will be exported to Stackdriver.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enable (bool):
            Indicates whether or not to export logs. This
            is false by default, which means no health check
            logging will be done.

            This field is a member of `oneof`_ ``_enable``.
    """

    enable: bool = proto.Field(
        proto.BOOL,
        number=311764355,
        optional=True,
    )


class HealthCheckReference(proto.Message):
    r"""A full or valid partial URL to a health check. For example,
    the following are valid URLs: -
    https://www.googleapis.com/compute/beta/projects/project-id/global/httpHealthChecks/health-check
    - projects/project-id/global/httpHealthChecks/health-check -
    global/httpHealthChecks/health-check


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check (str):

            This field is a member of `oneof`_ ``_health_check``.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
        optional=True,
    )


class HealthCheckService(proto.Message):
    r"""Represents a Health-Check as a Service resource.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a HealthCheckService. An
            up-to-date fingerprint must be provided in order
            to patch/update the HealthCheckService;
            Otherwise, the request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve the
            HealthCheckService.

            This field is a member of `oneof`_ ``_fingerprint``.
        health_checks (MutableSequence[str]):
            A list of URLs to the HealthCheck resources. Must have at
            least one HealthCheck, and not more than 10 for regional
            HealthCheckService, and not more than 1 for global
            HealthCheckService. HealthCheck resources must have
            portSpecification=USE_SERVING_PORT or
            portSpecification=USE_FIXED_PORT. For regional
            HealthCheckService, the HealthCheck must be regional and in
            the same region. For global HealthCheckService, HealthCheck
            must be global. Mix of regional and global HealthChecks is
            not supported. Multiple regional HealthChecks must belong to
            the same region. Regional HealthChecks must belong to the
            same region as zones of NetworkEndpointGroups. For global
            HealthCheckService using global INTERNET_IP_PORT
            NetworkEndpointGroups, the global HealthChecks must specify
            sourceRegions, and HealthChecks that specify sourceRegions
            can only be used with global INTERNET_IP_PORT
            NetworkEndpointGroups.
        health_status_aggregation_policy (str):
            Optional. Policy for how the results from multiple health
            checks for the same endpoint are aggregated. Defaults to
            NO_AGGREGATION if unspecified. - NO_AGGREGATION. An
            EndpointHealth message is returned for each pair in the
            health check service. - AND. If any health check of an
            endpoint reports UNHEALTHY, then UNHEALTHY is the
            HealthState of the endpoint. If all health checks report
            HEALTHY, the HealthState of the endpoint is HEALTHY. . This
            is only allowed with regional HealthCheckService. Check the
            HealthStatusAggregationPolicy enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_health_status_aggregation_policy``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output only] Type of the resource. Always
            compute#healthCheckServicefor health check services.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network_endpoint_groups (MutableSequence[str]):
            A list of URLs to the NetworkEndpointGroup resources. Must
            not have more than 100. For regional HealthCheckService,
            NEGs must be in zones in the region of the
            HealthCheckService. For global HealthCheckServices, the
            NetworkEndpointGroups must be global INTERNET_IP_PORT.
        notification_endpoints (MutableSequence[str]):
            A list of URLs to the NotificationEndpoint
            resources. Must not have more than 10. A list of
            endpoints for receiving notifications of change
            in health status. For regional
            HealthCheckService, NotificationEndpoint must be
            regional and in the same region. For global
            HealthCheckService, NotificationEndpoint must be
            global.
        region (str):
            [Output Only] URL of the region where the health check
            service resides. This field is not applicable to global
            health check services. You must specify this field as part
            of the HTTP request URL. It is not settable as a field in
            the request body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
    """

    class HealthStatusAggregationPolicy(proto.Enum):
        r"""Optional. Policy for how the results from multiple health checks for
        the same endpoint are aggregated. Defaults to NO_AGGREGATION if
        unspecified. - NO_AGGREGATION. An EndpointHealth message is returned
        for each pair in the health check service. - AND. If any health
        check of an endpoint reports UNHEALTHY, then UNHEALTHY is the
        HealthState of the endpoint. If all health checks report HEALTHY,
        the HealthState of the endpoint is HEALTHY. . This is only allowed
        with regional HealthCheckService.

        Values:
            UNDEFINED_HEALTH_STATUS_AGGREGATION_POLICY (0):
                A value indicating that the enum field is not
                set.
            AND (64951):
                If any backend's health check reports
                UNHEALTHY, then UNHEALTHY is the HealthState of
                the entire health check service. If all
                backend's are healthy, the HealthState of the
                health check service is HEALTHY.
            NO_AGGREGATION (426445124):
                An EndpointHealth message is returned for
                each backend in the health check service.
        """
        UNDEFINED_HEALTH_STATUS_AGGREGATION_POLICY = 0
        AND = 64951
        NO_AGGREGATION = 426445124

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    health_checks: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=448370606,
    )
    health_status_aggregation_policy: str = proto.Field(
        proto.STRING,
        number=253163129,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network_endpoint_groups: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29346733,
    )
    notification_endpoints: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=406728490,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )


class HealthCheckServiceReference(proto.Message):
    r"""A full or valid partial URL to a health check service. For
    example, the following are valid URLs: -
    https://www.googleapis.com/compute/beta/projects/project-id/regions/us-west1/healthCheckServices/health-check-service
    -
    projects/project-id/regions/us-west1/healthCheckServices/health-check-service
    - regions/us-west1/healthCheckServices/health-check-service


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check_service (str):

            This field is a member of `oneof`_ ``_health_check_service``.
    """

    health_check_service: str = proto.Field(
        proto.STRING,
        number=408374747,
        optional=True,
    )


class HealthCheckServicesList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.HealthCheckService]):
            A list of HealthCheckService resources.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#healthCheckServicesList for lists of
            HealthCheckServices.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["HealthCheckService"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="HealthCheckService",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class HealthChecksAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.HealthChecksScopedList]):
            A list of HealthChecksScopedList resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "HealthChecksScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="HealthChecksScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class HealthChecksScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_checks (MutableSequence[google.cloud.compute_v1.types.HealthCheck]):
            A list of HealthChecks contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of backend services when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    health_checks: MutableSequence["HealthCheck"] = proto.RepeatedField(
        proto.MESSAGE,
        number=448370606,
        message="HealthCheck",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class HealthStatus(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        annotations (MutableMapping[str, str]):
            Metadata defined as annotations for network
            endpoint.
        forwarding_rule (str):
            URL of the forwarding rule associated with
            the health status of the instance.

            This field is a member of `oneof`_ ``_forwarding_rule``.
        forwarding_rule_ip (str):
            A forwarding rule IP address assigned to this
            instance.

            This field is a member of `oneof`_ ``_forwarding_rule_ip``.
        health_state (str):
            Health state of the instance.
            Check the HealthState enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_health_state``.
        instance (str):
            URL of the instance resource.

            This field is a member of `oneof`_ ``_instance``.
        ip_address (str):
            For target pool based Network Load Balancing,
            it indicates the forwarding rule's IP address
            assigned to this instance. For other types of
            load balancing, the field indicates VM internal
            ip.

            This field is a member of `oneof`_ ``_ip_address``.
        port (int):
            The named port of the instance group, not
            necessarily the port that is health-checked.

            This field is a member of `oneof`_ ``_port``.
        weight (str):

            This field is a member of `oneof`_ ``_weight``.
        weight_error (str):
            Check the WeightError enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_weight_error``.
    """

    class HealthState(proto.Enum):
        r"""Health state of the instance.

        Values:
            UNDEFINED_HEALTH_STATE (0):
                A value indicating that the enum field is not
                set.
            HEALTHY (439801213):
                No description available.
            UNHEALTHY (462118084):
                No description available.
        """
        UNDEFINED_HEALTH_STATE = 0
        HEALTHY = 439801213
        UNHEALTHY = 462118084

    class WeightError(proto.Enum):
        r"""

        Values:
            UNDEFINED_WEIGHT_ERROR (0):
                A value indicating that the enum field is not
                set.
            INVALID_WEIGHT (383698400):
                The response to a Health Check probe had the
                HTTP response header field
                X-Load-Balancing-Endpoint-Weight, but its
                content was invalid (i.e., not a non-negative
                single-precision floating-point number in
                decimal string representation).
            MISSING_WEIGHT (384027537):
                The response to a Health Check probe did not
                have the HTTP response header field
                X-Load-Balancing-Endpoint-Weight.
            UNAVAILABLE_WEIGHT (439464295):
                This is the value when the accompanied health
                status is either TIMEOUT (i.e.,the Health Check
                probe was not able to get a response in time) or
                UNKNOWN. For the latter, it should be typically
                because there has not been sufficient time to
                parse and report the weight for a new backend
                (which is with 0.0.0.0 ip address). However, it
                can be also due to an outage case for which the
                health status is explicitly reset to UNKNOWN.
            WEIGHT_NONE (502428831):
                This is the default value when WeightReportMode is DISABLE,
                and is also the initial value when WeightReportMode has just
                updated to ENABLE or DRY_RUN and there has not been
                sufficient time to parse and report the backend weight.
        """
        UNDEFINED_WEIGHT_ERROR = 0
        INVALID_WEIGHT = 383698400
        MISSING_WEIGHT = 384027537
        UNAVAILABLE_WEIGHT = 439464295
        WEIGHT_NONE = 502428831

    annotations: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=112032548,
    )
    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
        optional=True,
    )
    forwarding_rule_ip: str = proto.Field(
        proto.STRING,
        number=172250632,
        optional=True,
    )
    health_state: str = proto.Field(
        proto.STRING,
        number=324007150,
        optional=True,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
        optional=True,
    )
    ip_address: str = proto.Field(
        proto.STRING,
        number=406272220,
        optional=True,
    )
    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )
    weight: str = proto.Field(
        proto.STRING,
        number=282149496,
        optional=True,
    )
    weight_error: str = proto.Field(
        proto.STRING,
        number=522501505,
        optional=True,
    )


class HealthStatusForNetworkEndpoint(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (google.cloud.compute_v1.types.BackendServiceReference):
            URL of the backend service associated with
            the health state of the network endpoint.

            This field is a member of `oneof`_ ``_backend_service``.
        forwarding_rule (google.cloud.compute_v1.types.ForwardingRuleReference):
            URL of the forwarding rule associated with
            the health state of the network endpoint.

            This field is a member of `oneof`_ ``_forwarding_rule``.
        health_check (google.cloud.compute_v1.types.HealthCheckReference):
            URL of the health check associated with the
            health state of the network endpoint.

            This field is a member of `oneof`_ ``_health_check``.
        health_check_service (google.cloud.compute_v1.types.HealthCheckServiceReference):
            URL of the health check service associated
            with the health state of the network endpoint.

            This field is a member of `oneof`_ ``_health_check_service``.
        health_state (str):
            Health state of the network endpoint
            determined based on the health checks
            configured. Check the HealthState enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_health_state``.
    """

    class HealthState(proto.Enum):
        r"""Health state of the network endpoint determined based on the
        health checks configured.

        Values:
            UNDEFINED_HEALTH_STATE (0):
                A value indicating that the enum field is not
                set.
            DRAINING (480455402):
                Endpoint is being drained.
            HEALTHY (439801213):
                Endpoint is healthy.
            UNHEALTHY (462118084):
                Endpoint is unhealthy.
            UNKNOWN (433141802):
                Health status of the endpoint is unknown.
        """
        UNDEFINED_HEALTH_STATE = 0
        DRAINING = 480455402
        HEALTHY = 439801213
        UNHEALTHY = 462118084
        UNKNOWN = 433141802

    backend_service: "BackendServiceReference" = proto.Field(
        proto.MESSAGE,
        number=306946058,
        optional=True,
        message="BackendServiceReference",
    )
    forwarding_rule: "ForwardingRuleReference" = proto.Field(
        proto.MESSAGE,
        number=269964030,
        optional=True,
        message="ForwardingRuleReference",
    )
    health_check: "HealthCheckReference" = proto.Field(
        proto.MESSAGE,
        number=308876645,
        optional=True,
        message="HealthCheckReference",
    )
    health_check_service: "HealthCheckServiceReference" = proto.Field(
        proto.MESSAGE,
        number=408374747,
        optional=True,
        message="HealthCheckServiceReference",
    )
    health_state: str = proto.Field(
        proto.STRING,
        number=324007150,
        optional=True,
    )


class Help(proto.Message):
    r"""Provides links to documentation or for performing an out of
    band action. For example, if a quota check failed with an error
    indicating the calling project hasn't enabled the accessed
    service, this can contain a URL pointing directly to the right
    place in the developer console to flip the bit.

    Attributes:
        links (MutableSequence[google.cloud.compute_v1.types.HelpLink]):
            URL(s) pointing to additional information on
            handling the current error.
    """

    links: MutableSequence["HelpLink"] = proto.RepeatedField(
        proto.MESSAGE,
        number=102977465,
        message="HelpLink",
    )


class HelpLink(proto.Message):
    r"""Describes a URL link.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        description (str):
            Describes what the link offers.

            This field is a member of `oneof`_ ``_description``.
        url (str):
            The URL of the link.

            This field is a member of `oneof`_ ``_url``.
    """

    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    url: str = proto.Field(
        proto.STRING,
        number=116079,
        optional=True,
    )


class HostRule(proto.Message):
    r"""UrlMaps A host-matching rule for a URL. If matched, will use
    the named PathMatcher to select the BackendService.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        hosts (MutableSequence[str]):
            The list of host patterns to match. They must be valid
            hostnames with optional port numbers in the format
            host:port. \* matches any string of ([a-z0-9-.]*). In that
            case, \* must be the first character, and if followed by
            anything, the immediate following character must be either -
            or .. \* based matching is not supported when the URL map is
            bound to a target gRPC proxy that has the
            validateForProxyless field set to true.
        path_matcher (str):
            The name of the PathMatcher to use to match
            the path portion of the URL if the hostRule
            matches the URL's host portion.

            This field is a member of `oneof`_ ``_path_matcher``.
    """

    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    hosts: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=99467211,
    )
    path_matcher: str = proto.Field(
        proto.STRING,
        number=337813272,
        optional=True,
    )


class HttpFaultAbort(proto.Message):
    r"""Specification for how requests are aborted as part of fault
    injection.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        http_status (int):
            The HTTP status code used to abort the
            request. The value must be from 200 to 599
            inclusive. For gRPC protocol, the gRPC status
            code is mapped to HTTP status code according to
            this mapping table. HTTP status 200 is mapped to
            gRPC status UNKNOWN. Injecting an OK status is
            currently not supported by Traffic Director.

            This field is a member of `oneof`_ ``_http_status``.
        percentage (float):
            The percentage of traffic for connections,
            operations, or requests that is aborted as part
            of fault injection. The value must be from 0.0
            to 100.0 inclusive.

            This field is a member of `oneof`_ ``_percentage``.
    """

    http_status: int = proto.Field(
        proto.UINT32,
        number=468949897,
        optional=True,
    )
    percentage: float = proto.Field(
        proto.DOUBLE,
        number=151909018,
        optional=True,
    )


class HttpFaultDelay(proto.Message):
    r"""Specifies the delay introduced by the load balancer before
    forwarding the request to the backend service as part of fault
    injection.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        fixed_delay (google.cloud.compute_v1.types.Duration):
            Specifies the value of the fixed delay
            interval.

            This field is a member of `oneof`_ ``_fixed_delay``.
        percentage (float):
            The percentage of traffic for connections,
            operations, or requests for which a delay is
            introduced as part of fault injection. The value
            must be from 0.0 to 100.0 inclusive.

            This field is a member of `oneof`_ ``_percentage``.
    """

    fixed_delay: "Duration" = proto.Field(
        proto.MESSAGE,
        number=317037816,
        optional=True,
        message="Duration",
    )
    percentage: float = proto.Field(
        proto.DOUBLE,
        number=151909018,
        optional=True,
    )


class HttpFaultInjection(proto.Message):
    r"""The specification for fault injection introduced into traffic
    to test the resiliency of clients to backend service failure. As
    part of fault injection, when clients send requests to a backend
    service, delays can be introduced by the load balancer on a
    percentage of requests before sending those request to the
    backend service. Similarly requests from clients can be aborted
    by the load balancer for a percentage of requests.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        abort (google.cloud.compute_v1.types.HttpFaultAbort):
            The specification for how client requests are
            aborted as part of fault injection.

            This field is a member of `oneof`_ ``_abort``.
        delay (google.cloud.compute_v1.types.HttpFaultDelay):
            The specification for how client requests are
            delayed as part of fault injection, before being
            sent to a backend service.

            This field is a member of `oneof`_ ``_delay``.
    """

    abort: "HttpFaultAbort" = proto.Field(
        proto.MESSAGE,
        number=92611376,
        optional=True,
        message="HttpFaultAbort",
    )
    delay: "HttpFaultDelay" = proto.Field(
        proto.MESSAGE,
        number=95467907,
        optional=True,
        message="HttpFaultDelay",
    )


class HttpHeaderAction(proto.Message):
    r"""The request and response header transformations that take
    effect before the request is passed along to the selected
    backendService.

    Attributes:
        request_headers_to_add (MutableSequence[google.cloud.compute_v1.types.HttpHeaderOption]):
            Headers to add to a matching request before
            forwarding the request to the backendService.
        request_headers_to_remove (MutableSequence[str]):
            A list of header names for headers that need
            to be removed from the request before forwarding
            the request to the backendService.
        response_headers_to_add (MutableSequence[google.cloud.compute_v1.types.HttpHeaderOption]):
            Headers to add the response before sending
            the response back to the client.
        response_headers_to_remove (MutableSequence[str]):
            A list of header names for headers that need
            to be removed from the response before sending
            the response back to the client.
    """

    request_headers_to_add: MutableSequence["HttpHeaderOption"] = proto.RepeatedField(
        proto.MESSAGE,
        number=72111974,
        message="HttpHeaderOption",
    )
    request_headers_to_remove: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=218425247,
    )
    response_headers_to_add: MutableSequence["HttpHeaderOption"] = proto.RepeatedField(
        proto.MESSAGE,
        number=32136052,
        message="HttpHeaderOption",
    )
    response_headers_to_remove: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=75415761,
    )


class HttpHeaderMatch(proto.Message):
    r"""matchRule criteria for request header matches.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        exact_match (str):
            The value should exactly match contents of
            exactMatch. Only one of exactMatch, prefixMatch,
            suffixMatch, regexMatch, presentMatch or
            rangeMatch must be set.

            This field is a member of `oneof`_ ``_exact_match``.
        header_name (str):
            The name of the HTTP header to match. For matching against
            the HTTP request's authority, use a headerMatch with the
            header name ":authority". For matching a request's method,
            use the headerName ":method". When the URL map is bound to a
            target gRPC proxy that has the validateForProxyless field
            set to true, only non-binary user-specified custom metadata
            and the ``content-type`` header are supported. The following
            transport-level headers cannot be used in header matching
            rules: ``:authority``, ``:method``, ``:path``, ``:scheme``,
            ``user-agent``, ``accept-encoding``, ``content-encoding``,
            ``grpc-accept-encoding``, ``grpc-encoding``,
            ``grpc-previous-rpc-attempts``, ``grpc-tags-bin``,
            ``grpc-timeout`` and ``grpc-trace-bin``.

            This field is a member of `oneof`_ ``_header_name``.
        invert_match (bool):
            If set to false, the headerMatch is
            considered a match if the preceding match
            criteria are met. If set to true, the
            headerMatch is considered a match if the
            preceding match criteria are NOT met. The
            default setting is false.

            This field is a member of `oneof`_ ``_invert_match``.
        prefix_match (str):
            The value of the header must start with the
            contents of prefixMatch. Only one of exactMatch,
            prefixMatch, suffixMatch, regexMatch,
            presentMatch or rangeMatch must be set.

            This field is a member of `oneof`_ ``_prefix_match``.
        present_match (bool):
            A header with the contents of headerName must
            exist. The match takes place whether or not the
            request's header has a value. Only one of
            exactMatch, prefixMatch, suffixMatch,
            regexMatch, presentMatch or rangeMatch must be
            set.

            This field is a member of `oneof`_ ``_present_match``.
        range_match (google.cloud.compute_v1.types.Int64RangeMatch):
            The header value must be an integer and its value must be in
            the range specified in rangeMatch. If the header does not
            contain an integer, number or is empty, the match fails. For
            example for a range [-5, 0] - -3 will match. - 0 will not
            match. - 0.25 will not match. - -3someString will not match.
            Only one of exactMatch, prefixMatch, suffixMatch,
            regexMatch, presentMatch or rangeMatch must be set.
            rangeMatch is not supported for load balancers that have
            loadBalancingScheme set to EXTERNAL.

            This field is a member of `oneof`_ ``_range_match``.
        regex_match (str):
            The value of the header must match the regular expression
            specified in regexMatch. For more information about regular
            expression syntax, see Syntax. For matching against a port
            specified in the HTTP request, use a headerMatch with
            headerName set to PORT and a regular expression that
            satisfies the RFC2616 Host header's port specifier. Only one
            of exactMatch, prefixMatch, suffixMatch, regexMatch,
            presentMatch or rangeMatch must be set. Regular expressions
            can only be used when the loadBalancingScheme is set to
            INTERNAL_SELF_MANAGED.

            This field is a member of `oneof`_ ``_regex_match``.
        suffix_match (str):
            The value of the header must end with the
            contents of suffixMatch. Only one of exactMatch,
            prefixMatch, suffixMatch, regexMatch,
            presentMatch or rangeMatch must be set.

            This field is a member of `oneof`_ ``_suffix_match``.
    """

    exact_match: str = proto.Field(
        proto.STRING,
        number=457641093,
        optional=True,
    )
    header_name: str = proto.Field(
        proto.STRING,
        number=110223613,
        optional=True,
    )
    invert_match: bool = proto.Field(
        proto.BOOL,
        number=501130268,
        optional=True,
    )
    prefix_match: str = proto.Field(
        proto.STRING,
        number=257898968,
        optional=True,
    )
    present_match: bool = proto.Field(
        proto.BOOL,
        number=67435841,
        optional=True,
    )
    range_match: "Int64RangeMatch" = proto.Field(
        proto.MESSAGE,
        number=97244227,
        optional=True,
        message="Int64RangeMatch",
    )
    regex_match: str = proto.Field(
        proto.STRING,
        number=107387853,
        optional=True,
    )
    suffix_match: str = proto.Field(
        proto.STRING,
        number=426488663,
        optional=True,
    )


class HttpHeaderOption(proto.Message):
    r"""Specification determining how headers are added to requests
    or responses.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        header_name (str):
            The name of the header.

            This field is a member of `oneof`_ ``_header_name``.
        header_value (str):
            The value of the header to add.

            This field is a member of `oneof`_ ``_header_value``.
        replace (bool):
            If false, headerValue is appended to any
            values that already exist for the header. If
            true, headerValue is set for the header,
            discarding any values that were set for that
            header. The default value is false.

            This field is a member of `oneof`_ ``_replace``.
    """

    header_name: str = proto.Field(
        proto.STRING,
        number=110223613,
        optional=True,
    )
    header_value: str = proto.Field(
        proto.STRING,
        number=203094335,
        optional=True,
    )
    replace: bool = proto.Field(
        proto.BOOL,
        number=20755124,
        optional=True,
    )


class HttpQueryParameterMatch(proto.Message):
    r"""HttpRouteRuleMatch criteria for a request's query parameter.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        exact_match (str):
            The queryParameterMatch matches if the value
            of the parameter exactly matches the contents of
            exactMatch. Only one of presentMatch,
            exactMatch, or regexMatch must be set.

            This field is a member of `oneof`_ ``_exact_match``.
        name (str):
            The name of the query parameter to match. The
            query parameter must exist in the request, in
            the absence of which the request match fails.

            This field is a member of `oneof`_ ``_name``.
        present_match (bool):
            Specifies that the queryParameterMatch
            matches if the request contains the query
            parameter, irrespective of whether the parameter
            has a value or not. Only one of presentMatch,
            exactMatch, or regexMatch must be set.

            This field is a member of `oneof`_ ``_present_match``.
        regex_match (str):
            The queryParameterMatch matches if the value of the
            parameter matches the regular expression specified by
            regexMatch. For more information about regular expression
            syntax, see Syntax. Only one of presentMatch, exactMatch, or
            regexMatch must be set. Regular expressions can only be used
            when the loadBalancingScheme is set to
            INTERNAL_SELF_MANAGED.

            This field is a member of `oneof`_ ``_regex_match``.
    """

    exact_match: str = proto.Field(
        proto.STRING,
        number=457641093,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    present_match: bool = proto.Field(
        proto.BOOL,
        number=67435841,
        optional=True,
    )
    regex_match: str = proto.Field(
        proto.STRING,
        number=107387853,
        optional=True,
    )


class HttpRedirectAction(proto.Message):
    r"""Specifies settings for an HTTP redirect.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        host_redirect (str):
            The host that is used in the redirect
            response instead of the one that was supplied in
            the request. The value must be from 1 to 255
            characters.

            This field is a member of `oneof`_ ``_host_redirect``.
        https_redirect (bool):
            If set to true, the URL scheme in the
            redirected request is set to HTTPS. If set to
            false, the URL scheme of the redirected request
            remains the same as that of the request. This
            must only be set for URL maps used in
            TargetHttpProxys. Setting this true for
            TargetHttpsProxy is not permitted. The default
            is set to false.

            This field is a member of `oneof`_ ``_https_redirect``.
        path_redirect (str):
            The path that is used in the redirect
            response instead of the one that was supplied in
            the request. pathRedirect cannot be supplied
            together with prefixRedirect. Supply one alone
            or neither. If neither is supplied, the path of
            the original request is used for the redirect.
            The value must be from 1 to 1024 characters.

            This field is a member of `oneof`_ ``_path_redirect``.
        prefix_redirect (str):
            The prefix that replaces the prefixMatch
            specified in the HttpRouteRuleMatch, retaining
            the remaining portion of the URL before
            redirecting the request. prefixRedirect cannot
            be supplied together with pathRedirect. Supply
            one alone or neither. If neither is supplied,
            the path of the original request is used for the
            redirect. The value must be from 1 to 1024
            characters.

            This field is a member of `oneof`_ ``_prefix_redirect``.
        redirect_response_code (str):
            The HTTP Status code to use for this RedirectAction.
            Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is
            the default value and corresponds to 301. - FOUND, which
            corresponds to 302. - SEE_OTHER which corresponds to 303. -
            TEMPORARY_REDIRECT, which corresponds to 307. In this case,
            the request method is retained. - PERMANENT_REDIRECT, which
            corresponds to 308. In this case, the request method is
            retained. Check the RedirectResponseCode enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_redirect_response_code``.
        strip_query (bool):
            If set to true, any accompanying query
            portion of the original URL is removed before
            redirecting the request. If set to false, the
            query portion of the original URL is retained.
            The default is set to false.

            This field is a member of `oneof`_ ``_strip_query``.
    """

    class RedirectResponseCode(proto.Enum):
        r"""The HTTP Status code to use for this RedirectAction. Supported
        values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value
        and corresponds to 301. - FOUND, which corresponds to 302. -
        SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which
        corresponds to 307. In this case, the request method is retained. -
        PERMANENT_REDIRECT, which corresponds to 308. In this case, the
        request method is retained.

        Values:
            UNDEFINED_REDIRECT_RESPONSE_CODE (0):
                A value indicating that the enum field is not
                set.
            FOUND (67084130):
                Http Status Code 302 - Found.
            MOVED_PERMANENTLY_DEFAULT (386698449):
                Http Status Code 301 - Moved Permanently.
            PERMANENT_REDIRECT (382006381):
                Http Status Code 308 - Permanent Redirect
                maintaining HTTP method.
            SEE_OTHER (445380580):
                Http Status Code 303 - See Other.
            TEMPORARY_REDIRECT (489550378):
                Http Status Code 307 - Temporary Redirect
                maintaining HTTP method.
        """
        UNDEFINED_REDIRECT_RESPONSE_CODE = 0
        FOUND = 67084130
        MOVED_PERMANENTLY_DEFAULT = 386698449
        PERMANENT_REDIRECT = 382006381
        SEE_OTHER = 445380580
        TEMPORARY_REDIRECT = 489550378

    host_redirect: str = proto.Field(
        proto.STRING,
        number=107417747,
        optional=True,
    )
    https_redirect: bool = proto.Field(
        proto.BOOL,
        number=170260656,
        optional=True,
    )
    path_redirect: str = proto.Field(
        proto.STRING,
        number=272342710,
        optional=True,
    )
    prefix_redirect: str = proto.Field(
        proto.STRING,
        number=446184169,
        optional=True,
    )
    redirect_response_code: str = proto.Field(
        proto.STRING,
        number=436710408,
        optional=True,
    )
    strip_query: bool = proto.Field(
        proto.BOOL,
        number=52284641,
        optional=True,
    )


class HttpRetryPolicy(proto.Message):
    r"""The retry policy associates with HttpRouteRule

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        num_retries (int):
            Specifies the allowed number retries. This
            number must be > 0. If not specified, defaults
            to 1.

            This field is a member of `oneof`_ ``_num_retries``.
        per_try_timeout (google.cloud.compute_v1.types.Duration):
            Specifies a non-zero timeout per retry
            attempt. If not specified, will use the timeout
            set in the HttpRouteAction field. If timeout in
            the HttpRouteAction field is not set, this field
            uses the largest timeout among all backend
            services associated with the route. Not
            supported when the URL map is bound to a target
            gRPC proxy that has the validateForProxyless
            field set to true.

            This field is a member of `oneof`_ ``_per_try_timeout``.
        retry_conditions (MutableSequence[str]):
            Specifies one or more conditions when this retry policy
            applies. Valid values are: - 5xx: retry is attempted if the
            instance or endpoint responds with any 5xx response code, or
            if the instance or endpoint does not respond at all. For
            example, disconnects, reset, read timeout, connection
            failure, and refused streams. - gateway-error: Similar to
            5xx, but only applies to response codes 502, 503 or 504. -
            connect-failure: a retry is attempted on failures connecting
            to the instance or endpoint. For example, connection
            timeouts. - retriable-4xx: a retry is attempted if the
            instance or endpoint responds with a 4xx response code. The
            only error that you can retry is error code 409. -
            refused-stream: a retry is attempted if the instance or
            endpoint resets the stream with a REFUSED_STREAM error code.
            This reset type indicates that it is safe to retry. -
            cancelled: a retry is attempted if the gRPC status code in
            the response header is set to cancelled. -
            deadline-exceeded: a retry is attempted if the gRPC status
            code in the response header is set to deadline-exceeded. -
            internal: a retry is attempted if the gRPC status code in
            the response header is set to internal. -
            resource-exhausted: a retry is attempted if the gRPC status
            code in the response header is set to resource-exhausted. -
            unavailable: a retry is attempted if the gRPC status code in
            the response header is set to unavailable. Only the
            following codes are supported when the URL map is bound to
            target gRPC proxy that has validateForProxyless field set to
            true. - cancelled - deadline-exceeded - internal -
            resource-exhausted - unavailable
    """

    num_retries: int = proto.Field(
        proto.UINT32,
        number=251680141,
        optional=True,
    )
    per_try_timeout: "Duration" = proto.Field(
        proto.MESSAGE,
        number=280041147,
        optional=True,
        message="Duration",
    )
    retry_conditions: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=28815535,
    )


class HttpRouteAction(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        cors_policy (google.cloud.compute_v1.types.CorsPolicy):
            The specification for allowing client-side
            cross-origin requests. For more information
            about the W3C recommendation for cross-origin
            resource sharing (CORS), see Fetch API Living
            Standard. Not supported when the URL map is
            bound to a target gRPC proxy.

            This field is a member of `oneof`_ ``_cors_policy``.
        fault_injection_policy (google.cloud.compute_v1.types.HttpFaultInjection):
            The specification for fault injection introduced into
            traffic to test the resiliency of clients to backend service
            failure. As part of fault injection, when clients send
            requests to a backend service, delays can be introduced by a
            load balancer on a percentage of requests before sending
            those requests to the backend service. Similarly requests
            from clients can be aborted by the load balancer for a
            percentage of requests. timeout and retry_policy is ignored
            by clients that are configured with a fault_injection_policy
            if: 1. The traffic is generated by fault injection AND 2.
            The fault injection is not a delay fault injection. Fault
            injection is not supported with the global external HTTP(S)
            load balancer (classic). To see which load balancers support
            fault injection, see Load balancing: Routing and traffic
            management features.

            This field is a member of `oneof`_ ``_fault_injection_policy``.
        max_stream_duration (google.cloud.compute_v1.types.Duration):
            Specifies the maximum duration (timeout) for streams on the
            selected route. Unlike the timeout field where the timeout
            duration starts from the time the request has been fully
            processed (known as *end-of-stream*), the duration in this
            field is computed from the beginning of the stream until the
            response has been processed, including all retries. A stream
            that does not complete in this duration is closed. If not
            specified, this field uses the maximum maxStreamDuration
            value among all backend services associated with the route.
            This field is only allowed if the Url map is used with
            backend services with loadBalancingScheme set to
            INTERNAL_SELF_MANAGED.

            This field is a member of `oneof`_ ``_max_stream_duration``.
        request_mirror_policy (google.cloud.compute_v1.types.RequestMirrorPolicy):
            Specifies the policy on how requests intended
            for the route's backends are shadowed to a
            separate mirrored backend service. The load
            balancer does not wait for responses from the
            shadow service. Before sending traffic to the
            shadow service, the host / authority header is
            suffixed with -shadow. Not supported when the
            URL map is bound to a target gRPC proxy that has
            the validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_request_mirror_policy``.
        retry_policy (google.cloud.compute_v1.types.HttpRetryPolicy):
            Specifies the retry policy associated with
            this route.

            This field is a member of `oneof`_ ``_retry_policy``.
        timeout (google.cloud.compute_v1.types.Duration):
            Specifies the timeout for the selected route. Timeout is
            computed from the time the request has been fully processed
            (known as *end-of-stream*) up until the response has been
            processed. Timeout includes all retries. If not specified,
            this field uses the largest timeout among all backend
            services associated with the route. Not supported when the
            URL map is bound to a target gRPC proxy that has
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_timeout``.
        url_rewrite (google.cloud.compute_v1.types.UrlRewrite):
            The spec to modify the URL of the request,
            before forwarding the request to the matched
            service. urlRewrite is the only action supported
            in UrlMaps for external HTTP(S) load balancers.
            Not supported when the URL map is bound to a
            target gRPC proxy that has the
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_url_rewrite``.
        weighted_backend_services (MutableSequence[google.cloud.compute_v1.types.WeightedBackendService]):
            A list of weighted backend services to send
            traffic to when a route match occurs. The
            weights determine the fraction of traffic that
            flows to their corresponding backend service. If
            all traffic needs to go to a single backend
            service, there must be one
            weightedBackendService with weight set to a
            non-zero number. After a backend service is
            identified and before forwarding the request to
            the backend service, advanced routing actions
            such as URL rewrites and header transformations
            are applied depending on additional settings
            specified in this HttpRouteAction.
    """

    cors_policy: "CorsPolicy" = proto.Field(
        proto.MESSAGE,
        number=398943748,
        optional=True,
        message="CorsPolicy",
    )
    fault_injection_policy: "HttpFaultInjection" = proto.Field(
        proto.MESSAGE,
        number=412781079,
        optional=True,
        message="HttpFaultInjection",
    )
    max_stream_duration: "Duration" = proto.Field(
        proto.MESSAGE,
        number=61428376,
        optional=True,
        message="Duration",
    )
    request_mirror_policy: "RequestMirrorPolicy" = proto.Field(
        proto.MESSAGE,
        number=220196866,
        optional=True,
        message="RequestMirrorPolicy",
    )
    retry_policy: "HttpRetryPolicy" = proto.Field(
        proto.MESSAGE,
        number=56799913,
        optional=True,
        message="HttpRetryPolicy",
    )
    timeout: "Duration" = proto.Field(
        proto.MESSAGE,
        number=296701281,
        optional=True,
        message="Duration",
    )
    url_rewrite: "UrlRewrite" = proto.Field(
        proto.MESSAGE,
        number=273333948,
        optional=True,
        message="UrlRewrite",
    )
    weighted_backend_services: MutableSequence[
        "WeightedBackendService"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=337028049,
        message="WeightedBackendService",
    )


class HttpRouteRule(proto.Message):
    r"""The HttpRouteRule setting specifies how to match an HTTP
    request and the corresponding routing action that load balancing
    proxies perform.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        description (str):
            The short description conveying the intent of
            this routeRule. The description can have a
            maximum length of 1024 characters.

            This field is a member of `oneof`_ ``_description``.
        header_action (google.cloud.compute_v1.types.HttpHeaderAction):
            Specifies changes to request and response headers that need
            to take effect for the selected backendService. The
            headerAction value specified here is applied before the
            matching pathMatchers[].headerAction and after
            pathMatchers[].routeRules[].routeAction.weightedBackendService.backendServiceWeightAction[].headerAction
            HeaderAction is not supported for load balancers that have
            their loadBalancingScheme set to EXTERNAL. Not supported
            when the URL map is bound to a target gRPC proxy that has
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_header_action``.
        match_rules (MutableSequence[google.cloud.compute_v1.types.HttpRouteRuleMatch]):
            The list of criteria for matching attributes
            of a request to this routeRule. This list has OR
            semantics: the request matches this routeRule
            when any of the matchRules are satisfied.
            However predicates within a given matchRule have
            AND semantics. All predicates within a matchRule
            must match for the request to match the rule.
        priority (int):
            For routeRules within a given pathMatcher,
            priority determines the order in which a load
            balancer interprets routeRules. RouteRules are
            evaluated in order of priority, from the lowest
            to highest number. The priority of a rule
            decreases as its number increases (1, 2, 3,
            N+1). The first rule that matches the request is
            applied. You cannot configure two or more
            routeRules with the same priority. Priority for
            each rule must be set to a number from 0 to
            2147483647 inclusive. Priority numbers can have
            gaps, which enable you to add or remove rules in
            the future without affecting the rest of the
            rules. For example, 1, 2, 3, 4, 5, 9, 12, 16 is
            a valid series of priority numbers to which you
            could add rules numbered from 6 to 8, 10 to 11,
            and 13 to 15 in the future without any impact on
            existing rules.

            This field is a member of `oneof`_ ``_priority``.
        route_action (google.cloud.compute_v1.types.HttpRouteAction):
            In response to a matching matchRule, the load
            balancer performs advanced routing actions, such
            as URL rewrites and header transformations,
            before forwarding the request to the selected
            backend. If routeAction specifies any
            weightedBackendServices, service must not be
            set. Conversely if service is set, routeAction
            cannot contain any weightedBackendServices. Only
            one of urlRedirect, service or
            routeAction.weightedBackendService must be set.
            URL maps for Classic external HTTP(S) load
            balancers only support the urlRewrite action
            within a route rule's routeAction.

            This field is a member of `oneof`_ ``_route_action``.
        service (str):
            The full or partial URL of the backend
            service resource to which traffic is directed if
            this rule is matched. If routeAction is also
            specified, advanced routing actions, such as URL
            rewrites, take effect before sending the request
            to the backend. However, if service is
            specified, routeAction cannot contain any
            weightedBackendServices. Conversely, if
            routeAction specifies any
            weightedBackendServices, service must not be
            specified. Only one of urlRedirect, service or
            routeAction.weightedBackendService must be set.

            This field is a member of `oneof`_ ``_service``.
        url_redirect (google.cloud.compute_v1.types.HttpRedirectAction):
            When this rule is matched, the request is
            redirected to a URL specified by urlRedirect. If
            urlRedirect is specified, service or routeAction
            must not be set. Not supported when the URL map
            is bound to a target gRPC proxy.

            This field is a member of `oneof`_ ``_url_redirect``.
    """

    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    header_action: "HttpHeaderAction" = proto.Field(
        proto.MESSAGE,
        number=328077352,
        optional=True,
        message="HttpHeaderAction",
    )
    match_rules: MutableSequence["HttpRouteRuleMatch"] = proto.RepeatedField(
        proto.MESSAGE,
        number=376200701,
        message="HttpRouteRuleMatch",
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    route_action: "HttpRouteAction" = proto.Field(
        proto.MESSAGE,
        number=424563948,
        optional=True,
        message="HttpRouteAction",
    )
    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )
    url_redirect: "HttpRedirectAction" = proto.Field(
        proto.MESSAGE,
        number=405147820,
        optional=True,
        message="HttpRedirectAction",
    )


class HttpRouteRuleMatch(proto.Message):
    r"""HttpRouteRuleMatch specifies a set of criteria for matching
    requests to an HttpRouteRule. All specified criteria must be
    satisfied for a match to occur.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        full_path_match (str):
            For satisfying the matchRule condition, the
            path of the request must exactly match the value
            specified in fullPathMatch after removing any
            query parameters and anchor that may be part of
            the original URL. fullPathMatch must be from 1
            to 1024 characters. Only one of prefixMatch,
            fullPathMatch or regexMatch must be specified.

            This field is a member of `oneof`_ ``_full_path_match``.
        header_matches (MutableSequence[google.cloud.compute_v1.types.HttpHeaderMatch]):
            Specifies a list of header match criteria,
            all of which must match corresponding headers in
            the request.
        ignore_case (bool):
            Specifies that prefixMatch and fullPathMatch
            matches are case sensitive. The default value is
            false. ignoreCase must not be used with
            regexMatch. Not supported when the URL map is
            bound to a target gRPC proxy.

            This field is a member of `oneof`_ ``_ignore_case``.
        metadata_filters (MutableSequence[google.cloud.compute_v1.types.MetadataFilter]):
            Opaque filter criteria used by the load balancer to restrict
            routing configuration to a limited set of xDS compliant
            clients. In their xDS requests to the load balancer, xDS
            clients present node metadata. When there is a match, the
            relevant routing configuration is made available to those
            proxies. For each metadataFilter in this list, if its
            filterMatchCriteria is set to MATCH_ANY, at least one of the
            filterLabels must match the corresponding label provided in
            the metadata. If its filterMatchCriteria is set to
            MATCH_ALL, then all of its filterLabels must match with
            corresponding labels provided in the metadata. If multiple
            metadata filters are specified, all of them need to be
            satisfied in order to be considered a match. metadataFilters
            specified here is applied after those specified in
            ForwardingRule that refers to the UrlMap this
            HttpRouteRuleMatch belongs to. metadataFilters only applies
            to load balancers that have loadBalancingScheme set to
            INTERNAL_SELF_MANAGED. Not supported when the URL map is
            bound to a target gRPC proxy that has validateForProxyless
            field set to true.
        prefix_match (str):
            For satisfying the matchRule condition, the
            request's path must begin with the specified
            prefixMatch. prefixMatch must begin with a /.
            The value must be from 1 to 1024 characters.
            Only one of prefixMatch, fullPathMatch or
            regexMatch must be specified.

            This field is a member of `oneof`_ ``_prefix_match``.
        query_parameter_matches (MutableSequence[google.cloud.compute_v1.types.HttpQueryParameterMatch]):
            Specifies a list of query parameter match
            criteria, all of which must match corresponding
            query parameters in the request. Not supported
            when the URL map is bound to a target gRPC
            proxy.
        regex_match (str):
            For satisfying the matchRule condition, the path of the
            request must satisfy the regular expression specified in
            regexMatch after removing any query parameters and anchor
            supplied with the original URL. For more information about
            regular expression syntax, see Syntax. Only one of
            prefixMatch, fullPathMatch or regexMatch must be specified.
            Regular expressions can only be used when the
            loadBalancingScheme is set to INTERNAL_SELF_MANAGED.

            This field is a member of `oneof`_ ``_regex_match``.
    """

    full_path_match: str = proto.Field(
        proto.STRING,
        number=214598875,
        optional=True,
    )
    header_matches: MutableSequence["HttpHeaderMatch"] = proto.RepeatedField(
        proto.MESSAGE,
        number=361903489,
        message="HttpHeaderMatch",
    )
    ignore_case: bool = proto.Field(
        proto.BOOL,
        number=464324989,
        optional=True,
    )
    metadata_filters: MutableSequence["MetadataFilter"] = proto.RepeatedField(
        proto.MESSAGE,
        number=464725739,
        message="MetadataFilter",
    )
    prefix_match: str = proto.Field(
        proto.STRING,
        number=257898968,
        optional=True,
    )
    query_parameter_matches: MutableSequence[
        "HttpQueryParameterMatch"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=286231270,
        message="HttpQueryParameterMatch",
    )
    regex_match: str = proto.Field(
        proto.STRING,
        number=107387853,
        optional=True,
    )


class Image(proto.Message):
    r"""Represents an Image resource. You can use images to create
    boot disks for your VM instances. For more information, read
    Images.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        architecture (str):
            The architecture of the image. Valid values are ARM64 or
            X86_64. Check the Architecture enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_architecture``.
        archive_size_bytes (int):
            Size of the image tar.gz archive stored in
            Google Cloud Storage (in bytes).

            This field is a member of `oneof`_ ``_archive_size_bytes``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        deprecated (google.cloud.compute_v1.types.DeprecationStatus):
            The deprecation status associated with this
            image.

            This field is a member of `oneof`_ ``_deprecated``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        disk_size_gb (int):
            Size of the image when restored onto a
            persistent disk (in GB).

            This field is a member of `oneof`_ ``_disk_size_gb``.
        family (str):
            The name of the image family to which this
            image belongs. The image family name can be from
            a publicly managed image family provided by
            Compute Engine, or from a custom image family
            you create. For example, centos-stream-9 is a
            publicly available image family. For more
            information, see Image family best practices.
            When creating disks, you can specify an image
            family instead of a specific image name. The
            image family always returns its latest image
            that is not deprecated. The name of the image
            family must comply with RFC1035.

            This field is a member of `oneof`_ ``_family``.
        guest_os_features (MutableSequence[google.cloud.compute_v1.types.GuestOsFeature]):
            A list of features to enable on the guest operating system.
            Applicable only for bootable images. To see a list of
            available options, see the guestOSfeatures[].type parameter.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        image_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            Encrypts the image using a customer-supplied
            encryption key. After you encrypt an image with
            a customer-supplied key, you must provide the
            same key if you use the image later (e.g. to
            create a disk from the image). Customer-supplied
            encryption keys do not protect access to
            metadata of the disk. If you do not provide an
            encryption key when creating the image, then the
            disk will be encrypted using an automatically
            generated key and you do not need to provide a
            key to use the image later.

            This field is a member of `oneof`_ ``_image_encryption_key``.
        kind (str):
            [Output Only] Type of the resource. Always compute#image for
            images.

            This field is a member of `oneof`_ ``_kind``.
        label_fingerprint (str):
            A fingerprint for the labels being applied to
            this image, which is essentially a hash of the
            labels used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update labels. You must always provide an
            up-to-date fingerprint hash in order to update
            or change labels, otherwise the request will
            fail with error 412 conditionNotMet. To see the
            latest fingerprint, make a get() request to
            retrieve an image.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            Labels to apply to this image. These can be
            later modified by the setLabels method.
        license_codes (MutableSequence[int]):
            Integer license codes indicating which
            licenses are attached to this image.
        licenses (MutableSequence[str]):
            Any applicable license URI.
        name (str):
            Name of the resource; provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        raw_disk (google.cloud.compute_v1.types.RawDisk):
            The parameters of the raw disk image.

            This field is a member of `oneof`_ ``_raw_disk``.
        satisfies_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_satisfies_pzs``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        shielded_instance_initial_state (google.cloud.compute_v1.types.InitialStateConfig):
            Set the secure boot keys of shielded
            instance.

            This field is a member of `oneof`_ ``_shielded_instance_initial_state``.
        source_disk (str):
            URL of the source disk used to create this
            image. For example, the following are valid
            values: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /disks/disk -
            projects/project/zones/zone/disks/disk -
            zones/zone/disks/disk In order to create an
            image, you must provide the full or partial URL
            of one of the following: - The rawDisk.source
            URL - The sourceDisk URL - The sourceImage URL -
            The sourceSnapshot URL

            This field is a member of `oneof`_ ``_source_disk``.
        source_disk_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The customer-supplied encryption key of the
            source disk. Required if the source disk is
            protected by a customer-supplied encryption key.

            This field is a member of `oneof`_ ``_source_disk_encryption_key``.
        source_disk_id (str):
            [Output Only] The ID value of the disk used to create this
            image. This value may be used to determine whether the image
            was taken from the current or a previous instance of a given
            disk name.

            This field is a member of `oneof`_ ``_source_disk_id``.
        source_image (str):
            URL of the source image used to create this image. The
            following are valid formats for the URL: -
            https://www.googleapis.com/compute/v1/projects/project_id/global/
            images/image_name -
            projects/project_id/global/images/image_name In order to
            create an image, you must provide the full or partial URL of
            one of the following: - The rawDisk.source URL - The
            sourceDisk URL - The sourceImage URL - The sourceSnapshot
            URL

            This field is a member of `oneof`_ ``_source_image``.
        source_image_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The customer-supplied encryption key of the
            source image. Required if the source image is
            protected by a customer-supplied encryption key.

            This field is a member of `oneof`_ ``_source_image_encryption_key``.
        source_image_id (str):
            [Output Only] The ID value of the image used to create this
            image. This value may be used to determine whether the image
            was taken from the current or a previous instance of a given
            image name.

            This field is a member of `oneof`_ ``_source_image_id``.
        source_snapshot (str):
            URL of the source snapshot used to create this image. The
            following are valid formats for the URL: -
            https://www.googleapis.com/compute/v1/projects/project_id/global/
            snapshots/snapshot_name -
            projects/project_id/global/snapshots/snapshot_name In order
            to create an image, you must provide the full or partial URL
            of one of the following: - The rawDisk.source URL - The
            sourceDisk URL - The sourceImage URL - The sourceSnapshot
            URL

            This field is a member of `oneof`_ ``_source_snapshot``.
        source_snapshot_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The customer-supplied encryption key of the
            source snapshot. Required if the source snapshot
            is protected by a customer-supplied encryption
            key.

            This field is a member of `oneof`_ ``_source_snapshot_encryption_key``.
        source_snapshot_id (str):
            [Output Only] The ID value of the snapshot used to create
            this image. This value may be used to determine whether the
            snapshot was taken from the current or a previous instance
            of a given snapshot name.

            This field is a member of `oneof`_ ``_source_snapshot_id``.
        source_type (str):
            The type of the image used to create this
            disk. The default and only valid value is RAW.
            Check the SourceType enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_source_type``.
        status (str):
            [Output Only] The status of the image. An image can be used
            to create other resources, such as instances, only after the
            image has been successfully created and the status is set to
            READY. Possible values are FAILED, PENDING, or READY. Check
            the Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        storage_locations (MutableSequence[str]):
            Cloud Storage bucket storage location of the
            image (regional or multi-regional).
    """

    class Architecture(proto.Enum):
        r"""The architecture of the image. Valid values are ARM64 or X86_64.

        Values:
            UNDEFINED_ARCHITECTURE (0):
                A value indicating that the enum field is not
                set.
            ARCHITECTURE_UNSPECIFIED (394750507):
                Default value indicating Architecture is not
                set.
            ARM64 (62547450):
                Machines with architecture ARM64
            X86_64 (425300551):
                Machines with architecture X86_64
        """
        UNDEFINED_ARCHITECTURE = 0
        ARCHITECTURE_UNSPECIFIED = 394750507
        ARM64 = 62547450
        X86_64 = 425300551

    class SourceType(proto.Enum):
        r"""The type of the image used to create this disk. The default
        and only valid value is RAW.

        Values:
            UNDEFINED_SOURCE_TYPE (0):
                A value indicating that the enum field is not
                set.
            RAW (80904):
                No description available.
        """
        UNDEFINED_SOURCE_TYPE = 0
        RAW = 80904

    class Status(proto.Enum):
        r"""[Output Only] The status of the image. An image can be used to
        create other resources, such as instances, only after the image has
        been successfully created and the status is set to READY. Possible
        values are FAILED, PENDING, or READY.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            DELETING (528602024):
                Image is deleting.
            FAILED (455706685):
                Image creation failed due to an error.
            PENDING (35394935):
                Image hasn't been created as yet.
            READY (77848963):
                Image has been successfully created.
        """
        UNDEFINED_STATUS = 0
        DELETING = 528602024
        FAILED = 455706685
        PENDING = 35394935
        READY = 77848963

    architecture: str = proto.Field(
        proto.STRING,
        number=302803283,
        optional=True,
    )
    archive_size_bytes: int = proto.Field(
        proto.INT64,
        number=381093450,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    deprecated: "DeprecationStatus" = proto.Field(
        proto.MESSAGE,
        number=515138995,
        optional=True,
        message="DeprecationStatus",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    disk_size_gb: int = proto.Field(
        proto.INT64,
        number=316263735,
        optional=True,
    )
    family: str = proto.Field(
        proto.STRING,
        number=328751972,
        optional=True,
    )
    guest_os_features: MutableSequence["GuestOsFeature"] = proto.RepeatedField(
        proto.MESSAGE,
        number=79294545,
        message="GuestOsFeature",
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    image_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=379512583,
        optional=True,
        message="CustomerEncryptionKey",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    license_codes: MutableSequence[int] = proto.RepeatedField(
        proto.INT64,
        number=45482664,
    )
    licenses: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=337642578,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    raw_disk: "RawDisk" = proto.Field(
        proto.MESSAGE,
        number=503113556,
        optional=True,
        message="RawDisk",
    )
    satisfies_pzs: bool = proto.Field(
        proto.BOOL,
        number=480964267,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    shielded_instance_initial_state: "InitialStateConfig" = proto.Field(
        proto.MESSAGE,
        number=192356867,
        optional=True,
        message="InitialStateConfig",
    )
    source_disk: str = proto.Field(
        proto.STRING,
        number=451753793,
        optional=True,
    )
    source_disk_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=531501153,
        optional=True,
        message="CustomerEncryptionKey",
    )
    source_disk_id: str = proto.Field(
        proto.STRING,
        number=454190809,
        optional=True,
    )
    source_image: str = proto.Field(
        proto.STRING,
        number=50443319,
        optional=True,
    )
    source_image_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=381503659,
        optional=True,
        message="CustomerEncryptionKey",
    )
    source_image_id: str = proto.Field(
        proto.STRING,
        number=55328291,
        optional=True,
    )
    source_snapshot: str = proto.Field(
        proto.STRING,
        number=126061928,
        optional=True,
    )
    source_snapshot_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=303679322,
        optional=True,
        message="CustomerEncryptionKey",
    )
    source_snapshot_id: str = proto.Field(
        proto.STRING,
        number=98962258,
        optional=True,
    )
    source_type: str = proto.Field(
        proto.STRING,
        number=452245726,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    storage_locations: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=328005274,
    )


class ImageFamilyView(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        image (google.cloud.compute_v1.types.Image):
            The latest image that is part of the
            specified image family in the requested
            location, and that is not deprecated.

            This field is a member of `oneof`_ ``_image``.
    """

    image: "Image" = proto.Field(
        proto.MESSAGE,
        number=100313435,
        optional=True,
        message="Image",
    )


class ImageList(proto.Message):
    r"""Contains a list of images.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Image]):
            A list of Image resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Image"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Image",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InitialStateConfig(proto.Message):
    r"""Initial State for shielded instance, these are public keys
    which are safe to store in public


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        dbs (MutableSequence[google.cloud.compute_v1.types.FileContentBuffer]):
            The Key Database (db).
        dbxs (MutableSequence[google.cloud.compute_v1.types.FileContentBuffer]):
            The forbidden key database (dbx).
        keks (MutableSequence[google.cloud.compute_v1.types.FileContentBuffer]):
            The Key Exchange Key (KEK).
        pk (google.cloud.compute_v1.types.FileContentBuffer):
            The Platform Key (PK).

            This field is a member of `oneof`_ ``_pk``.
    """

    dbs: MutableSequence["FileContentBuffer"] = proto.RepeatedField(
        proto.MESSAGE,
        number=99253,
        message="FileContentBuffer",
    )
    dbxs: MutableSequence["FileContentBuffer"] = proto.RepeatedField(
        proto.MESSAGE,
        number=3077113,
        message="FileContentBuffer",
    )
    keks: MutableSequence["FileContentBuffer"] = proto.RepeatedField(
        proto.MESSAGE,
        number=3288130,
        message="FileContentBuffer",
    )
    pk: "FileContentBuffer" = proto.Field(
        proto.MESSAGE,
        number=3579,
        optional=True,
        message="FileContentBuffer",
    )


class InsertAddressRequest(proto.Message):
    r"""A request message for Addresses.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        address_resource (google.cloud.compute_v1.types.Address):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    address_resource: "Address" = proto.Field(
        proto.MESSAGE,
        number=483888121,
        message="Address",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertAutoscalerRequest(proto.Message):
    r"""A request message for Autoscalers.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            Name of the zone for this request.
    """

    autoscaler_resource: "Autoscaler" = proto.Field(
        proto.MESSAGE,
        number=207616118,
        message="Autoscaler",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class InsertBackendBucketRequest(proto.Message):
    r"""A request message for BackendBuckets.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_bucket_resource (google.cloud.compute_v1.types.BackendBucket):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_bucket_resource: "BackendBucket" = proto.Field(
        proto.MESSAGE,
        number=380757784,
        message="BackendBucket",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service_resource (google.cloud.compute_v1.types.BackendService):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_service_resource: "BackendService" = proto.Field(
        proto.MESSAGE,
        number=347586723,
        message="BackendService",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertDiskRequest(proto.Message):
    r"""A request message for Disks.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk_resource (google.cloud.compute_v1.types.Disk):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        source_image (str):
            Source image to restore onto a disk. This
            field is optional.

            This field is a member of `oneof`_ ``_source_image``.
        zone (str):
            The name of the zone for this request.
    """

    disk_resource: "Disk" = proto.Field(
        proto.MESSAGE,
        number=25880688,
        message="Disk",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    source_image: str = proto.Field(
        proto.STRING,
        number=50443319,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class InsertExternalVpnGatewayRequest(proto.Message):
    r"""A request message for ExternalVpnGateways.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        external_vpn_gateway_resource (google.cloud.compute_v1.types.ExternalVpnGateway):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    external_vpn_gateway_resource: "ExternalVpnGateway" = proto.Field(
        proto.MESSAGE,
        number=486813576,
        message="ExternalVpnGateway",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
            The body resource for this request
        parent_id (str):
            Parent ID for this request. The ID can be either be
            "folders/[FOLDER_ID]" if the parent is a folder or
            "organizations/[ORGANIZATION_ID]" if the parent is an
            organization.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy_resource: "FirewallPolicy" = proto.Field(
        proto.MESSAGE,
        number=495049532,
        message="FirewallPolicy",
    )
    parent_id: str = proto.Field(
        proto.STRING,
        number=459714768,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertFirewallRequest(proto.Message):
    r"""A request message for Firewalls.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_resource (google.cloud.compute_v1.types.Firewall):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_resource: "Firewall" = proto.Field(
        proto.MESSAGE,
        number=41425005,
        message="Firewall",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertForwardingRuleRequest(proto.Message):
    r"""A request message for ForwardingRules.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    forwarding_rule_resource: "ForwardingRule" = proto.Field(
        proto.MESSAGE,
        number=301211695,
        message="ForwardingRule",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertGlobalAddressRequest(proto.Message):
    r"""A request message for GlobalAddresses.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        address_resource (google.cloud.compute_v1.types.Address):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    address_resource: "Address" = proto.Field(
        proto.MESSAGE,
        number=483888121,
        message="Address",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertGlobalForwardingRuleRequest(proto.Message):
    r"""A request message for GlobalForwardingRules.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    forwarding_rule_resource: "ForwardingRule" = proto.Field(
        proto.MESSAGE,
        number=301211695,
        message="ForwardingRule",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertGlobalNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for GlobalNetworkEndpointGroups.Insert. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_endpoint_group_resource (google.cloud.compute_v1.types.NetworkEndpointGroup):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network_endpoint_group_resource: "NetworkEndpointGroup" = proto.Field(
        proto.MESSAGE,
        number=525788839,
        message="NetworkEndpointGroup",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertGlobalPublicDelegatedPrefixeRequest(proto.Message):
    r"""A request message for GlobalPublicDelegatedPrefixes.Insert.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_delegated_prefix_resource: "PublicDelegatedPrefix" = proto.Field(
        proto.MESSAGE,
        number=47594501,
        message="PublicDelegatedPrefix",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertHealthCheckRequest(proto.Message):
    r"""A request message for HealthChecks.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check_resource (google.cloud.compute_v1.types.HealthCheck):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check_resource: "HealthCheck" = proto.Field(
        proto.MESSAGE,
        number=201925032,
        message="HealthCheck",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertImageRequest(proto.Message):
    r"""A request message for Images.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        force_create (bool):
            Force image creation if true.

            This field is a member of `oneof`_ ``_force_create``.
        image_resource (google.cloud.compute_v1.types.Image):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    force_create: bool = proto.Field(
        proto.BOOL,
        number=197723344,
        optional=True,
    )
    image_resource: "Image" = proto.Field(
        proto.MESSAGE,
        number=371171954,
        message="Image",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertInstanceGroupManagerRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where you want to create
            the managed instance group.
    """

    instance_group_manager_resource: "InstanceGroupManager" = proto.Field(
        proto.MESSAGE,
        number=261063946,
        message="InstanceGroupManager",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class InsertInstanceGroupRequest(proto.Message):
    r"""A request message for InstanceGroups.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_resource (google.cloud.compute_v1.types.InstanceGroup):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where you want to create
            the instance group.
    """

    instance_group_resource: "InstanceGroup" = proto.Field(
        proto.MESSAGE,
        number=286612152,
        message="InstanceGroup",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class InsertInstanceRequest(proto.Message):
    r"""A request message for Instances.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_resource (google.cloud.compute_v1.types.Instance):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        source_instance_template (str):
            Specifies instance template to create the
            instance. This field is optional. It can be a
            full or partial URL. For example, the following
            are all valid URLs to an instance template: -
            https://www.googleapis.com/compute/v1/projects/project
            /global/instanceTemplates/instanceTemplate -
            projects/project/global/instanceTemplates/instanceTemplate
            - global/instanceTemplates/instanceTemplate

            This field is a member of `oneof`_ ``_source_instance_template``.
        source_machine_image (str):
            Specifies the machine image to use to create
            the instance. This field is optional. It can be
            a full or partial URL. For example, the
            following are all valid URLs to a machine image:
            -
            https://www.googleapis.com/compute/v1/projects/project/global/global
            /machineImages/machineImage -
            projects/project/global/global/machineImages/machineImage
            - global/machineImages/machineImage

            This field is a member of `oneof`_ ``_source_machine_image``.
        zone (str):
            The name of the zone for this request.
    """

    instance_resource: "Instance" = proto.Field(
        proto.MESSAGE,
        number=215988344,
        message="Instance",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    source_instance_template: str = proto.Field(
        proto.STRING,
        number=332423616,
        optional=True,
    )
    source_machine_image: str = proto.Field(
        proto.STRING,
        number=21769791,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class InsertInstanceTemplateRequest(proto.Message):
    r"""A request message for InstanceTemplates.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_template_resource (google.cloud.compute_v1.types.InstanceTemplate):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_template_resource: "InstanceTemplate" = proto.Field(
        proto.MESSAGE,
        number=10679561,
        message="InstanceTemplate",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertInterconnectAttachmentRequest(proto.Message):
    r"""A request message for InterconnectAttachments.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        interconnect_attachment_resource (google.cloud.compute_v1.types.InterconnectAttachment):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        validate_only (bool):
            If true, the request will not be committed.

            This field is a member of `oneof`_ ``_validate_only``.
    """

    interconnect_attachment_resource: "InterconnectAttachment" = proto.Field(
        proto.MESSAGE,
        number=212341369,
        message="InterconnectAttachment",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    validate_only: bool = proto.Field(
        proto.BOOL,
        number=242744629,
        optional=True,
    )


class InsertInterconnectRequest(proto.Message):
    r"""A request message for Interconnects.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        interconnect_resource (google.cloud.compute_v1.types.Interconnect):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    interconnect_resource: "Interconnect" = proto.Field(
        proto.MESSAGE,
        number=397611167,
        message="Interconnect",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertLicenseRequest(proto.Message):
    r"""A request message for Licenses.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        license_resource (google.cloud.compute_v1.types.License):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    license_resource: "License" = proto.Field(
        proto.MESSAGE,
        number=437955148,
        message="License",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertMachineImageRequest(proto.Message):
    r"""A request message for MachineImages.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        machine_image_resource (google.cloud.compute_v1.types.MachineImage):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        source_instance (str):
            Required. Source instance that is used to
            create the machine image from.

            This field is a member of `oneof`_ ``_source_instance``.
    """

    machine_image_resource: "MachineImage" = proto.Field(
        proto.MESSAGE,
        number=60740970,
        message="MachineImage",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    source_instance: str = proto.Field(
        proto.STRING,
        number=396315705,
        optional=True,
    )


class InsertNetworkAttachmentRequest(proto.Message):
    r"""A request message for NetworkAttachments.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_attachment_resource (google.cloud.compute_v1.types.NetworkAttachment):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region of this request.
        request_id (str):
            An optional request ID to identify requests. Specify a
            unique request ID so that if you must retry your request,
            the server will know to ignore the request if it has already
            been completed. For example, consider a situation where you
            make an initial request and the request times out. If you
            make the request again with the same request ID, the server
            can check if original operation with the same request ID was
            received, and if so, will ignore the second request. This
            prevents clients from accidentally creating duplicate
            commitments. The request ID must be a valid UUID with the
            exception that zero UUID is not supported (
            00000000-0000-0000-0000-000000000000). end_interface:
            MixerMutationRequestBuilder

            This field is a member of `oneof`_ ``_request_id``.
    """

    network_attachment_resource: "NetworkAttachment" = proto.Field(
        proto.MESSAGE,
        number=210974745,
        message="NetworkAttachment",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertNetworkEdgeSecurityServiceRequest(proto.Message):
    r"""A request message for NetworkEdgeSecurityServices.Insert. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_edge_security_service_resource (google.cloud.compute_v1.types.NetworkEdgeSecurityService):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        validate_only (bool):
            If true, the request will not be committed.

            This field is a member of `oneof`_ ``_validate_only``.
    """

    network_edge_security_service_resource: "NetworkEdgeSecurityService" = proto.Field(
        proto.MESSAGE,
        number=477548966,
        message="NetworkEdgeSecurityService",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    validate_only: bool = proto.Field(
        proto.BOOL,
        number=242744629,
        optional=True,
    )


class InsertNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for NetworkEndpointGroups.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_endpoint_group_resource (google.cloud.compute_v1.types.NetworkEndpointGroup):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where you want to create
            the network endpoint group. It should comply
            with RFC1035.
    """

    network_endpoint_group_resource: "NetworkEndpointGroup" = proto.Field(
        proto.MESSAGE,
        number=525788839,
        message="NetworkEndpointGroup",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class InsertNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy_resource: "FirewallPolicy" = proto.Field(
        proto.MESSAGE,
        number=495049532,
        message="FirewallPolicy",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertNetworkRequest(proto.Message):
    r"""A request message for Networks.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_resource (google.cloud.compute_v1.types.Network):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network_resource: "Network" = proto.Field(
        proto.MESSAGE,
        number=122105599,
        message="Network",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        initial_node_count (int):
            Initial count of nodes in the node group.
        node_group_resource (google.cloud.compute_v1.types.NodeGroup):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    initial_node_count: int = proto.Field(
        proto.INT32,
        number=71951469,
    )
    node_group_resource: "NodeGroup" = proto.Field(
        proto.MESSAGE,
        number=505321899,
        message="NodeGroup",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class InsertNodeTemplateRequest(proto.Message):
    r"""A request message for NodeTemplates.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_template_resource (google.cloud.compute_v1.types.NodeTemplate):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    node_template_resource: "NodeTemplate" = proto.Field(
        proto.MESSAGE,
        number=127364406,
        message="NodeTemplate",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertPacketMirroringRequest(proto.Message):
    r"""A request message for PacketMirrorings.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        packet_mirroring_resource (google.cloud.compute_v1.types.PacketMirroring):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    packet_mirroring_resource: "PacketMirroring" = proto.Field(
        proto.MESSAGE,
        number=493501985,
        message="PacketMirroring",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertPublicAdvertisedPrefixeRequest(proto.Message):
    r"""A request message for PublicAdvertisedPrefixes.Insert. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        public_advertised_prefix_resource (google.cloud.compute_v1.types.PublicAdvertisedPrefix):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_advertised_prefix_resource: "PublicAdvertisedPrefix" = proto.Field(
        proto.MESSAGE,
        number=233614223,
        message="PublicAdvertisedPrefix",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertPublicDelegatedPrefixeRequest(proto.Message):
    r"""A request message for PublicDelegatedPrefixes.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix):
            The body resource for this request
        region (str):
            Name of the region of this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_delegated_prefix_resource: "PublicDelegatedPrefix" = proto.Field(
        proto.MESSAGE,
        number=47594501,
        message="PublicDelegatedPrefix",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionAutoscalerRequest(proto.Message):
    r"""A request message for RegionAutoscalers.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    autoscaler_resource: "Autoscaler" = proto.Field(
        proto.MESSAGE,
        number=207616118,
        message="Autoscaler",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionBackendServiceRequest(proto.Message):
    r"""A request message for RegionBackendServices.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service_resource (google.cloud.compute_v1.types.BackendService):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_service_resource: "BackendService" = proto.Field(
        proto.MESSAGE,
        number=347586723,
        message="BackendService",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionCommitmentRequest(proto.Message):
    r"""A request message for RegionCommitments.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        commitment_resource (google.cloud.compute_v1.types.Commitment):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    commitment_resource: "Commitment" = proto.Field(
        proto.MESSAGE,
        number=244240888,
        message="Commitment",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk_resource (google.cloud.compute_v1.types.Disk):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        source_image (str):
            Source image to restore onto a disk. This
            field is optional.

            This field is a member of `oneof`_ ``_source_image``.
    """

    disk_resource: "Disk" = proto.Field(
        proto.MESSAGE,
        number=25880688,
        message="Disk",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    source_image: str = proto.Field(
        proto.STRING,
        number=50443319,
        optional=True,
    )


class InsertRegionHealthCheckRequest(proto.Message):
    r"""A request message for RegionHealthChecks.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check_resource (google.cloud.compute_v1.types.HealthCheck):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check_resource: "HealthCheck" = proto.Field(
        proto.MESSAGE,
        number=201925032,
        message="HealthCheck",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionHealthCheckServiceRequest(proto.Message):
    r"""A request message for RegionHealthCheckServices.Insert. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check_service_resource (google.cloud.compute_v1.types.HealthCheckService):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check_service_resource: "HealthCheckService" = proto.Field(
        proto.MESSAGE,
        number=477367794,
        message="HealthCheckService",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for RegionInstanceGroupManagers.Insert. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager_resource: "InstanceGroupManager" = proto.Field(
        proto.MESSAGE,
        number=261063946,
        message="InstanceGroupManager",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionInstanceTemplateRequest(proto.Message):
    r"""A request message for RegionInstanceTemplates.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_template_resource (google.cloud.compute_v1.types.InstanceTemplate):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_template_resource: "InstanceTemplate" = proto.Field(
        proto.MESSAGE,
        number=10679561,
        message="InstanceTemplate",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for RegionNetworkEndpointGroups.Insert. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_endpoint_group_resource (google.cloud.compute_v1.types.NetworkEndpointGroup):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            The name of the region where you want to
            create the network endpoint group. It should
            comply with RFC1035.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network_endpoint_group_resource: "NetworkEndpointGroup" = proto.Field(
        proto.MESSAGE,
        number=525788839,
        message="NetworkEndpointGroup",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for RegionNetworkFirewallPolicies.Insert.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy_resource: "FirewallPolicy" = proto.Field(
        proto.MESSAGE,
        number=495049532,
        message="FirewallPolicy",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionNotificationEndpointRequest(proto.Message):
    r"""A request message for RegionNotificationEndpoints.Insert. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        notification_endpoint_resource (google.cloud.compute_v1.types.NotificationEndpoint):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    notification_endpoint_resource: "NotificationEndpoint" = proto.Field(
        proto.MESSAGE,
        number=338459940,
        message="NotificationEndpoint",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class InsertRegionSecurityPolicyRequest(proto.Message):
    r"""A request message for RegionSecurityPolicies.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        security_policy_resource (google.cloud.compute_v1.types.SecurityPolicy):
            The body resource for this request
        validate_only (bool):
            If true, the request will not be committed.

            This field is a member of `oneof`_ ``_validate_only``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    security_policy_resource: "SecurityPolicy" = proto.Field(
        proto.MESSAGE,
        number=216159612,
        message="SecurityPolicy",
    )
    validate_only: bool = proto.Field(
        proto.BOOL,
        number=242744629,
        optional=True,
    )


class InsertRegionSslCertificateRequest(proto.Message):
    r"""A request message for RegionSslCertificates.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_certificate_resource (google.cloud.compute_v1.types.SslCertificate):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_certificate_resource: "SslCertificate" = proto.Field(
        proto.MESSAGE,
        number=180709897,
        message="SslCertificate",
    )


class InsertRegionSslPolicyRequest(proto.Message):
    r"""A request message for RegionSslPolicies.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_policy_resource (google.cloud.compute_v1.types.SslPolicy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_policy_resource: "SslPolicy" = proto.Field(
        proto.MESSAGE,
        number=274891848,
        message="SslPolicy",
    )


class InsertRegionTargetHttpProxyRequest(proto.Message):
    r"""A request message for RegionTargetHttpProxies.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_http_proxy_resource (google.cloud.compute_v1.types.TargetHttpProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_http_proxy_resource: "TargetHttpProxy" = proto.Field(
        proto.MESSAGE,
        number=24696744,
        message="TargetHttpProxy",
    )


class InsertRegionTargetHttpsProxyRequest(proto.Message):
    r"""A request message for RegionTargetHttpsProxies.Insert. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxy_resource (google.cloud.compute_v1.types.TargetHttpsProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxy_resource: "TargetHttpsProxy" = proto.Field(
        proto.MESSAGE,
        number=433657473,
        message="TargetHttpsProxy",
    )


class InsertRegionTargetTcpProxyRequest(proto.Message):
    r"""A request message for RegionTargetTcpProxies.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_tcp_proxy_resource (google.cloud.compute_v1.types.TargetTcpProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_tcp_proxy_resource: "TargetTcpProxy" = proto.Field(
        proto.MESSAGE,
        number=145913931,
        message="TargetTcpProxy",
    )


class InsertRegionUrlMapRequest(proto.Message):
    r"""A request message for RegionUrlMaps.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            begin_interface: MixerMutationRequestBuilder Request ID to
            support idempotency.

            This field is a member of `oneof`_ ``_request_id``.
        url_map_resource (google.cloud.compute_v1.types.UrlMap):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    url_map_resource: "UrlMap" = proto.Field(
        proto.MESSAGE,
        number=168675425,
        message="UrlMap",
    )


class InsertReservationRequest(proto.Message):
    r"""A request message for Reservations.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        reservation_resource (google.cloud.compute_v1.types.Reservation):
            The body resource for this request
        zone (str):
            Name of the zone for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    reservation_resource: "Reservation" = proto.Field(
        proto.MESSAGE,
        number=285030177,
        message="Reservation",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class InsertResourcePolicyRequest(proto.Message):
    r"""A request message for ResourcePolicies.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource_policy_resource (google.cloud.compute_v1.types.ResourcePolicy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource_policy_resource: "ResourcePolicy" = proto.Field(
        proto.MESSAGE,
        number=76826186,
        message="ResourcePolicy",
    )


class InsertRouteRequest(proto.Message):
    r"""A request message for Routes.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        route_resource (google.cloud.compute_v1.types.Route):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    route_resource: "Route" = proto.Field(
        proto.MESSAGE,
        number=225428804,
        message="Route",
    )


class InsertRouterRequest(proto.Message):
    r"""A request message for Routers.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        router_resource (google.cloud.compute_v1.types.Router):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    router_resource: "Router" = proto.Field(
        proto.MESSAGE,
        number=155222084,
        message="Router",
    )


class InsertSecurityPolicyRequest(proto.Message):
    r"""A request message for SecurityPolicies.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        security_policy_resource (google.cloud.compute_v1.types.SecurityPolicy):
            The body resource for this request
        validate_only (bool):
            If true, the request will not be committed.

            This field is a member of `oneof`_ ``_validate_only``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    security_policy_resource: "SecurityPolicy" = proto.Field(
        proto.MESSAGE,
        number=216159612,
        message="SecurityPolicy",
    )
    validate_only: bool = proto.Field(
        proto.BOOL,
        number=242744629,
        optional=True,
    )


class InsertServiceAttachmentRequest(proto.Message):
    r"""A request message for ServiceAttachments.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region of this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        service_attachment_resource (google.cloud.compute_v1.types.ServiceAttachment):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    service_attachment_resource: "ServiceAttachment" = proto.Field(
        proto.MESSAGE,
        number=472980256,
        message="ServiceAttachment",
    )


class InsertSnapshotRequest(proto.Message):
    r"""A request message for Snapshots.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        snapshot_resource (google.cloud.compute_v1.types.Snapshot):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    snapshot_resource: "Snapshot" = proto.Field(
        proto.MESSAGE,
        number=481319977,
        message="Snapshot",
    )


class InsertSslCertificateRequest(proto.Message):
    r"""A request message for SslCertificates.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_certificate_resource (google.cloud.compute_v1.types.SslCertificate):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_certificate_resource: "SslCertificate" = proto.Field(
        proto.MESSAGE,
        number=180709897,
        message="SslCertificate",
    )


class InsertSslPolicyRequest(proto.Message):
    r"""A request message for SslPolicies.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_policy_resource (google.cloud.compute_v1.types.SslPolicy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_policy_resource: "SslPolicy" = proto.Field(
        proto.MESSAGE,
        number=274891848,
        message="SslPolicy",
    )


class InsertSubnetworkRequest(proto.Message):
    r"""A request message for Subnetworks.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        subnetwork_resource (google.cloud.compute_v1.types.Subnetwork):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    subnetwork_resource: "Subnetwork" = proto.Field(
        proto.MESSAGE,
        number=42233151,
        message="Subnetwork",
    )


class InsertTargetGrpcProxyRequest(proto.Message):
    r"""A request message for TargetGrpcProxies.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_grpc_proxy_resource (google.cloud.compute_v1.types.TargetGrpcProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_grpc_proxy_resource: "TargetGrpcProxy" = proto.Field(
        proto.MESSAGE,
        number=328922450,
        message="TargetGrpcProxy",
    )


class InsertTargetHttpProxyRequest(proto.Message):
    r"""A request message for TargetHttpProxies.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_http_proxy_resource (google.cloud.compute_v1.types.TargetHttpProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_http_proxy_resource: "TargetHttpProxy" = proto.Field(
        proto.MESSAGE,
        number=24696744,
        message="TargetHttpProxy",
    )


class InsertTargetHttpsProxyRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxy_resource (google.cloud.compute_v1.types.TargetHttpsProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxy_resource: "TargetHttpsProxy" = proto.Field(
        proto.MESSAGE,
        number=433657473,
        message="TargetHttpsProxy",
    )


class InsertTargetInstanceRequest(proto.Message):
    r"""A request message for TargetInstances.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_instance_resource (google.cloud.compute_v1.types.TargetInstance):
            The body resource for this request
        zone (str):
            Name of the zone scoping this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_instance_resource: "TargetInstance" = proto.Field(
        proto.MESSAGE,
        number=430453066,
        message="TargetInstance",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class InsertTargetPoolRequest(proto.Message):
    r"""A request message for TargetPools.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_pool_resource (google.cloud.compute_v1.types.TargetPool):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_pool_resource: "TargetPool" = proto.Field(
        proto.MESSAGE,
        number=101281443,
        message="TargetPool",
    )


class InsertTargetSslProxyRequest(proto.Message):
    r"""A request message for TargetSslProxies.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_ssl_proxy_resource (google.cloud.compute_v1.types.TargetSslProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_ssl_proxy_resource: "TargetSslProxy" = proto.Field(
        proto.MESSAGE,
        number=142016192,
        message="TargetSslProxy",
    )


class InsertTargetTcpProxyRequest(proto.Message):
    r"""A request message for TargetTcpProxies.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_tcp_proxy_resource (google.cloud.compute_v1.types.TargetTcpProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_tcp_proxy_resource: "TargetTcpProxy" = proto.Field(
        proto.MESSAGE,
        number=145913931,
        message="TargetTcpProxy",
    )


class InsertTargetVpnGatewayRequest(proto.Message):
    r"""A request message for TargetVpnGateways.Insert. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_vpn_gateway_resource (google.cloud.compute_v1.types.TargetVpnGateway):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_vpn_gateway_resource: "TargetVpnGateway" = proto.Field(
        proto.MESSAGE,
        number=498050,
        message="TargetVpnGateway",
    )


class InsertUrlMapRequest(proto.Message):
    r"""A request message for UrlMaps.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        url_map_resource (google.cloud.compute_v1.types.UrlMap):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    url_map_resource: "UrlMap" = proto.Field(
        proto.MESSAGE,
        number=168675425,
        message="UrlMap",
    )


class InsertVpnGatewayRequest(proto.Message):
    r"""A request message for VpnGateways.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        vpn_gateway_resource (google.cloud.compute_v1.types.VpnGateway):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    vpn_gateway_resource: "VpnGateway" = proto.Field(
        proto.MESSAGE,
        number=182688660,
        message="VpnGateway",
    )


class InsertVpnTunnelRequest(proto.Message):
    r"""A request message for VpnTunnels.Insert. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        vpn_tunnel_resource (google.cloud.compute_v1.types.VpnTunnel):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    vpn_tunnel_resource: "VpnTunnel" = proto.Field(
        proto.MESSAGE,
        number=86839482,
        message="VpnTunnel",
    )


class Instance(proto.Message):
    r"""Represents an Instance resource. An instance is a virtual
    machine that is hosted on Google Cloud Platform. For more
    information, read Virtual Machine Instances.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        advanced_machine_features (google.cloud.compute_v1.types.AdvancedMachineFeatures):
            Controls for advanced machine-related
            behavior features.

            This field is a member of `oneof`_ ``_advanced_machine_features``.
        can_ip_forward (bool):
            Allows this instance to send and receive
            packets with non-matching destination or source
            IPs. This is required if you plan to use this
            instance to forward routes. For more
            information, see Enabling IP Forwarding .

            This field is a member of `oneof`_ ``_can_ip_forward``.
        confidential_instance_config (google.cloud.compute_v1.types.ConfidentialInstanceConfig):

            This field is a member of `oneof`_ ``_confidential_instance_config``.
        cpu_platform (str):
            [Output Only] The CPU platform used by this instance.

            This field is a member of `oneof`_ ``_cpu_platform``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        deletion_protection (bool):
            Whether the resource should be protected
            against deletion.

            This field is a member of `oneof`_ ``_deletion_protection``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        disks (MutableSequence[google.cloud.compute_v1.types.AttachedDisk]):
            Array of disks associated with this instance.
            Persistent disks must be created before you can
            assign them.
        display_device (google.cloud.compute_v1.types.DisplayDevice):
            Enables display device for the instance.

            This field is a member of `oneof`_ ``_display_device``.
        fingerprint (str):
            Specifies a fingerprint for this resource,
            which is essentially a hash of the instance's
            contents and used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update the instance. You must always provide
            an up-to-date fingerprint hash in order to
            update the instance. To see the latest
            fingerprint, make get() request to the instance.

            This field is a member of `oneof`_ ``_fingerprint``.
        guest_accelerators (MutableSequence[google.cloud.compute_v1.types.AcceleratorConfig]):
            A list of the type and count of accelerator
            cards attached to the instance.
        hostname (str):
            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.

            This field is a member of `oneof`_ ``_hostname``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        key_revocation_action_type (str):
            KeyRevocationActionType of the instance.
            Supported options are "STOP" and "NONE". The
            default value is "NONE" if it is not specified.
            Check the KeyRevocationActionType enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_key_revocation_action_type``.
        kind (str):
            [Output Only] Type of the resource. Always compute#instance
            for instances.

            This field is a member of `oneof`_ ``_kind``.
        label_fingerprint (str):
            A fingerprint for this request, which is
            essentially a hash of the label's contents and
            used for optimistic locking. The fingerprint is
            initially generated by Compute Engine and
            changes after every request to modify or update
            labels. You must always provide an up-to-date
            fingerprint hash in order to update or change
            labels. To see the latest fingerprint, make
            get() request to the instance.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            Labels to apply to this instance. These can
            be later modified by the setLabels method.
        last_start_timestamp (str):
            [Output Only] Last start timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_last_start_timestamp``.
        last_stop_timestamp (str):
            [Output Only] Last stop timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_last_stop_timestamp``.
        last_suspended_timestamp (str):
            [Output Only] Last suspended timestamp in RFC3339 text
            format.

            This field is a member of `oneof`_ ``_last_suspended_timestamp``.
        machine_type (str):
            Full or partial URL of the machine type
            resource to use for this instance, in the
            format: zones/zone/machineTypes/machine-type.
            This is provided by the client when the instance
            is created. For example, the following is a
            valid partial url to a predefined machine type:
            zones/us-central1-f/machineTypes/n1-standard-1
            To create a custom machine type, provide a URL
            to a machine type in the following format, where
            CPUS is 1 or an even number up to 32 (2, 4, 6,
            ... 24, etc), and MEMORY is the total memory for
            this instance. Memory must be a multiple of 256
            MB and must be supplied in MB (e.g. 5 GB of
            memory is 5120 MB):
            zones/zone/machineTypes/custom-CPUS-MEMORY For
            example:
            zones/us-central1-f/machineTypes/custom-4-5120
            For a full list of restrictions, read the
            Specifications for custom machine types.

            This field is a member of `oneof`_ ``_machine_type``.
        metadata (google.cloud.compute_v1.types.Metadata):
            The metadata key/value pairs assigned to this
            instance. This includes custom metadata and
            predefined keys.

            This field is a member of `oneof`_ ``_metadata``.
        min_cpu_platform (str):
            Specifies a minimum CPU platform for the VM
            instance. Applicable values are the friendly
            names of CPU platforms, such as minCpuPlatform:
            "Intel Haswell" or minCpuPlatform: "Intel Sandy
            Bridge".

            This field is a member of `oneof`_ ``_min_cpu_platform``.
        name (str):
            The name of the resource, provided by the client when
            initially creating the resource. The resource name must be
            1-63 characters long, and comply with RFC1035. Specifically,
            the name must be 1-63 characters long and match the regular
            expression ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the
            first character must be a lowercase letter, and all
            following characters must be a dash, lowercase letter, or
            digit, except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network_interfaces (MutableSequence[google.cloud.compute_v1.types.NetworkInterface]):
            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.
        network_performance_config (google.cloud.compute_v1.types.NetworkPerformanceConfig):

            This field is a member of `oneof`_ ``_network_performance_config``.
        params (google.cloud.compute_v1.types.InstanceParams):
            Input only. [Input Only] Additional params passed with the
            request, but not persisted as part of resource payload.

            This field is a member of `oneof`_ ``_params``.
        private_ipv6_google_access (str):
            The private IPv6 google access type for the VM. If not
            specified, use INHERIT_FROM_SUBNETWORK as default. Check the
            PrivateIpv6GoogleAccess enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_private_ipv6_google_access``.
        reservation_affinity (google.cloud.compute_v1.types.ReservationAffinity):
            Specifies the reservations that this instance
            can consume from.

            This field is a member of `oneof`_ ``_reservation_affinity``.
        resource_policies (MutableSequence[str]):
            Resource policies applied to this instance.
        resource_status (google.cloud.compute_v1.types.ResourceStatus):
            [Output Only] Specifies values set for instance attributes
            as compared to the values requested by user in the
            corresponding input only field.

            This field is a member of `oneof`_ ``_resource_status``.
        satisfies_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_satisfies_pzs``.
        scheduling (google.cloud.compute_v1.types.Scheduling):
            Sets the scheduling options for this
            instance.

            This field is a member of `oneof`_ ``_scheduling``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        service_accounts (MutableSequence[google.cloud.compute_v1.types.ServiceAccount]):
            A list of service accounts, with their
            specified scopes, authorized for this instance.
            Only one service account per VM instance is
            supported. Service accounts generate access
            tokens that can be accessed through the metadata
            server and used to authenticate applications on
            the instance. See Service Accounts for more
            information.
        shielded_instance_config (google.cloud.compute_v1.types.ShieldedInstanceConfig):

            This field is a member of `oneof`_ ``_shielded_instance_config``.
        shielded_instance_integrity_policy (google.cloud.compute_v1.types.ShieldedInstanceIntegrityPolicy):

            This field is a member of `oneof`_ ``_shielded_instance_integrity_policy``.
        source_machine_image (str):
            Source machine image

            This field is a member of `oneof`_ ``_source_machine_image``.
        source_machine_image_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            Source machine image encryption key when
            creating an instance from a machine image.

            This field is a member of `oneof`_ ``_source_machine_image_encryption_key``.
        start_restricted (bool):
            [Output Only] Whether a VM has been restricted for start
            because Compute Engine has detected suspicious activity.

            This field is a member of `oneof`_ ``_start_restricted``.
        status (str):
            [Output Only] The status of the instance. One of the
            following values: PROVISIONING, STAGING, RUNNING, STOPPING,
            SUSPENDING, SUSPENDED, REPAIRING, and TERMINATED. For more
            information about the status of the instance, see Instance
            life cycle. Check the Status enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_status``.
        status_message (str):
            [Output Only] An optional, human-readable explanation of the
            status.

            This field is a member of `oneof`_ ``_status_message``.
        tags (google.cloud.compute_v1.types.Tags):
            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. The tags can be later
            modified by the setTags method. Each tag within
            the list must comply with RFC1035. Multiple tags
            can be specified via the 'tags.items' field.

            This field is a member of `oneof`_ ``_tags``.
        zone (str):
            [Output Only] URL of the zone where the instance resides.
            You must specify this field as part of the HTTP request URL.
            It is not settable as a field in the request body.

            This field is a member of `oneof`_ ``_zone``.
    """

    class KeyRevocationActionType(proto.Enum):
        r"""KeyRevocationActionType of the instance. Supported options
        are "STOP" and "NONE". The default value is "NONE" if it is not
        specified.

        Values:
            UNDEFINED_KEY_REVOCATION_ACTION_TYPE (0):
                A value indicating that the enum field is not
                set.
            KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED (467110106):
                Default value. This value is unused.
            NONE (2402104):
                Indicates user chose no operation.
            STOP (2555906):
                Indicates user chose to opt for VM shutdown
                on key revocation.
        """
        UNDEFINED_KEY_REVOCATION_ACTION_TYPE = 0
        KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED = 467110106
        NONE = 2402104
        STOP = 2555906

    class PrivateIpv6GoogleAccess(proto.Enum):
        r"""The private IPv6 google access type for the VM. If not specified,
        use INHERIT_FROM_SUBNETWORK as default.

        Values:
            UNDEFINED_PRIVATE_IPV6_GOOGLE_ACCESS (0):
                A value indicating that the enum field is not
                set.
            ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE (427975994):
                Bidirectional private IPv6 access to/from
                Google services. If specified, the subnetwork
                who is attached to the instance's default
                network interface will be assigned an internal
                IPv6 prefix if it doesn't have before.
            ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE (288210263):
                Outbound private IPv6 access from VMs in this
                subnet to Google services. If specified, the
                subnetwork who is attached to the instance's
                default network interface will be assigned an
                internal IPv6 prefix if it doesn't have before.
            INHERIT_FROM_SUBNETWORK (530256959):
                Each network interface inherits
                PrivateIpv6GoogleAccess from its subnetwork.
        """
        UNDEFINED_PRIVATE_IPV6_GOOGLE_ACCESS = 0
        ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE = 427975994
        ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE = 288210263
        INHERIT_FROM_SUBNETWORK = 530256959

    class Status(proto.Enum):
        r"""[Output Only] The status of the instance. One of the following
        values: PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING,
        SUSPENDED, REPAIRING, and TERMINATED. For more information about the
        status of the instance, see Instance life cycle.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            DEPROVISIONING (428935662):
                The Nanny is halted and we are performing
                tear down tasks like network deprogramming,
                releasing quota, IP, tearing down disks etc.
            PROVISIONING (290896621):
                Resources are being allocated for the
                instance.
            REPAIRING (413483285):
                The instance is in repair.
            RUNNING (121282975):
                The instance is running.
            STAGING (431072283):
                All required resources have been allocated
                and the instance is being started.
            STOPPED (444276141):
                The instance has stopped successfully.
            STOPPING (350791796):
                The instance is currently stopping (either
                being deleted or killed).
            SUSPENDED (51223995):
                The instance has suspended.
            SUSPENDING (514206246):
                The instance is suspending.
            TERMINATED (250018339):
                The instance has stopped (either by explicit
                action or underlying failure).
        """
        UNDEFINED_STATUS = 0
        DEPROVISIONING = 428935662
        PROVISIONING = 290896621
        REPAIRING = 413483285
        RUNNING = 121282975
        STAGING = 431072283
        STOPPED = 444276141
        STOPPING = 350791796
        SUSPENDED = 51223995
        SUSPENDING = 514206246
        TERMINATED = 250018339

    advanced_machine_features: "AdvancedMachineFeatures" = proto.Field(
        proto.MESSAGE,
        number=409646002,
        optional=True,
        message="AdvancedMachineFeatures",
    )
    can_ip_forward: bool = proto.Field(
        proto.BOOL,
        number=467731324,
        optional=True,
    )
    confidential_instance_config: "ConfidentialInstanceConfig" = proto.Field(
        proto.MESSAGE,
        number=490637685,
        optional=True,
        message="ConfidentialInstanceConfig",
    )
    cpu_platform: str = proto.Field(
        proto.STRING,
        number=410285354,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    deletion_protection: bool = proto.Field(
        proto.BOOL,
        number=458014698,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    disks: MutableSequence["AttachedDisk"] = proto.RepeatedField(
        proto.MESSAGE,
        number=95594102,
        message="AttachedDisk",
    )
    display_device: "DisplayDevice" = proto.Field(
        proto.MESSAGE,
        number=258933875,
        optional=True,
        message="DisplayDevice",
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    guest_accelerators: MutableSequence["AcceleratorConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=463595119,
        message="AcceleratorConfig",
    )
    hostname: str = proto.Field(
        proto.STRING,
        number=237067315,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    key_revocation_action_type: str = proto.Field(
        proto.STRING,
        number=235941474,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    last_start_timestamp: str = proto.Field(
        proto.STRING,
        number=443830736,
        optional=True,
    )
    last_stop_timestamp: str = proto.Field(
        proto.STRING,
        number=412823010,
        optional=True,
    )
    last_suspended_timestamp: str = proto.Field(
        proto.STRING,
        number=356275337,
        optional=True,
    )
    machine_type: str = proto.Field(
        proto.STRING,
        number=227711026,
        optional=True,
    )
    metadata: "Metadata" = proto.Field(
        proto.MESSAGE,
        number=86866735,
        optional=True,
        message="Metadata",
    )
    min_cpu_platform: str = proto.Field(
        proto.STRING,
        number=242912759,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network_interfaces: MutableSequence["NetworkInterface"] = proto.RepeatedField(
        proto.MESSAGE,
        number=52735243,
        message="NetworkInterface",
    )
    network_performance_config: "NetworkPerformanceConfig" = proto.Field(
        proto.MESSAGE,
        number=398330850,
        optional=True,
        message="NetworkPerformanceConfig",
    )
    params: "InstanceParams" = proto.Field(
        proto.MESSAGE,
        number=78313862,
        optional=True,
        message="InstanceParams",
    )
    private_ipv6_google_access: str = proto.Field(
        proto.STRING,
        number=48277006,
        optional=True,
    )
    reservation_affinity: "ReservationAffinity" = proto.Field(
        proto.MESSAGE,
        number=157850683,
        optional=True,
        message="ReservationAffinity",
    )
    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )
    resource_status: "ResourceStatus" = proto.Field(
        proto.MESSAGE,
        number=249429315,
        optional=True,
        message="ResourceStatus",
    )
    satisfies_pzs: bool = proto.Field(
        proto.BOOL,
        number=480964267,
        optional=True,
    )
    scheduling: "Scheduling" = proto.Field(
        proto.MESSAGE,
        number=386688404,
        optional=True,
        message="Scheduling",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    service_accounts: MutableSequence["ServiceAccount"] = proto.RepeatedField(
        proto.MESSAGE,
        number=277537328,
        message="ServiceAccount",
    )
    shielded_instance_config: "ShieldedInstanceConfig" = proto.Field(
        proto.MESSAGE,
        number=12862901,
        optional=True,
        message="ShieldedInstanceConfig",
    )
    shielded_instance_integrity_policy: "ShieldedInstanceIntegrityPolicy" = proto.Field(
        proto.MESSAGE,
        number=163696919,
        optional=True,
        message="ShieldedInstanceIntegrityPolicy",
    )
    source_machine_image: str = proto.Field(
        proto.STRING,
        number=21769791,
        optional=True,
    )
    source_machine_image_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=192839075,
        optional=True,
        message="CustomerEncryptionKey",
    )
    start_restricted: bool = proto.Field(
        proto.BOOL,
        number=123693144,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    status_message: str = proto.Field(
        proto.STRING,
        number=297428154,
        optional=True,
    )
    tags: "Tags" = proto.Field(
        proto.MESSAGE,
        number=3552281,
        optional=True,
        message="Tags",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class InstanceAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.InstancesScopedList]):
            An object that contains a list of instances
            scoped by zone.
        kind (str):
            [Output Only] Type of resource. Always
            compute#instanceAggregatedList for aggregated lists of
            Instance resources.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "InstancesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="InstancesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceConsumptionData(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        consumption_info (google.cloud.compute_v1.types.InstanceConsumptionInfo):
            Resources consumed by the instance.

            This field is a member of `oneof`_ ``_consumption_info``.
        instance (str):
            Server-defined URL for the instance.

            This field is a member of `oneof`_ ``_instance``.
    """

    consumption_info: "InstanceConsumptionInfo" = proto.Field(
        proto.MESSAGE,
        number=146354898,
        optional=True,
        message="InstanceConsumptionInfo",
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
        optional=True,
    )


class InstanceConsumptionInfo(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        guest_cpus (int):
            The number of virtual CPUs that are available
            to the instance.

            This field is a member of `oneof`_ ``_guest_cpus``.
        local_ssd_gb (int):
            The amount of local SSD storage available to
            the instance, defined in GiB.

            This field is a member of `oneof`_ ``_local_ssd_gb``.
        memory_mb (int):
            The amount of physical memory available to
            the instance, defined in MiB.

            This field is a member of `oneof`_ ``_memory_mb``.
        min_node_cpus (int):
            The minimal guaranteed number of virtual CPUs
            that are reserved.

            This field is a member of `oneof`_ ``_min_node_cpus``.
    """

    guest_cpus: int = proto.Field(
        proto.INT32,
        number=393356754,
        optional=True,
    )
    local_ssd_gb: int = proto.Field(
        proto.INT32,
        number=329237578,
        optional=True,
    )
    memory_mb: int = proto.Field(
        proto.INT32,
        number=116001171,
        optional=True,
    )
    min_node_cpus: int = proto.Field(
        proto.INT32,
        number=317231675,
        optional=True,
    )


class InstanceGroup(proto.Message):
    r"""Represents an Instance Group resource. Instance Groups can be
    used to configure a target for load balancing. Instance groups
    can either be managed or unmanaged. To create managed instance
    groups, use the instanceGroupManager or
    regionInstanceGroupManager resource instead. Use zonal unmanaged
    instance groups if you need to apply load balancing to groups of
    heterogeneous instances or if you need to manage the instances
    yourself. You cannot create regional unmanaged instance groups.
    For more information, read Instance groups.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] The creation timestamp for this instance group
            in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            [Output Only] The fingerprint of the named ports. The system
            uses this fingerprint to detect conflicts when multiple
            users change the named ports concurrently.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] A unique identifier for this instance group,
            generated by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceGroup for instance groups.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            The name of the instance group. The name must
            be 1-63 characters long, and comply with
            RFC1035.

            This field is a member of `oneof`_ ``_name``.
        named_ports (MutableSequence[google.cloud.compute_v1.types.NamedPort]):
            Assigns a name to a port number. For example: {name: "http",
            port: 80} This allows the system to reference ports by the
            assigned name instead of a port number. Named ports can also
            contain multiple ports. For example: [{name: "app1", port:
            8080}, {name: "app1", port: 8081}, {name: "app2", port:
            8082}] Named ports apply to all instances in this instance
            group.
        network (str):
            [Output Only] The URL of the network to which all instances
            in the instance group belong. If your instance has multiple
            network interfaces, then the network and subnetwork fields
            only refer to the network and subnet used by your primary
            interface (nic0).

            This field is a member of `oneof`_ ``_network``.
        region (str):
            [Output Only] The URL of the region where the instance group
            is located (for regional resources).

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] The URL for this instance group. The server
            generates this URL.

            This field is a member of `oneof`_ ``_self_link``.
        size (int):
            [Output Only] The total number of instances in the instance
            group.

            This field is a member of `oneof`_ ``_size``.
        subnetwork (str):
            [Output Only] The URL of the subnetwork to which all
            instances in the instance group belong. If your instance has
            multiple network interfaces, then the network and subnetwork
            fields only refer to the network and subnet used by your
            primary interface (nic0).

            This field is a member of `oneof`_ ``_subnetwork``.
        zone (str):
            [Output Only] The URL of the zone where the instance group
            is located (for zonal resources).

            This field is a member of `oneof`_ ``_zone``.
    """

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    named_ports: MutableSequence["NamedPort"] = proto.RepeatedField(
        proto.MESSAGE,
        number=427598732,
        message="NamedPort",
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    size: int = proto.Field(
        proto.INT32,
        number=3530753,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class InstanceGroupAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.InstanceGroupsScopedList]):
            A list of InstanceGroupsScopedList resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceGroupAggregatedList for aggregated lists of
            instance groups.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "InstanceGroupsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="InstanceGroupsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceGroupList(proto.Message):
    r"""A list of InstanceGroup resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.InstanceGroup]):
            A list of InstanceGroup resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceGroupList for instance group lists.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["InstanceGroup"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InstanceGroup",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceGroupManager(proto.Message):
    r"""Represents a Managed Instance Group resource. An instance
    group is a collection of VM instances that you can manage as a
    single entity. For more information, read Instance groups. For
    zonal Managed Instance Group, use the instanceGroupManagers
    resource. For regional Managed Instance Group, use the
    regionInstanceGroupManagers resource.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_healing_policies (MutableSequence[google.cloud.compute_v1.types.InstanceGroupManagerAutoHealingPolicy]):
            The autohealing policy for this managed
            instance group. You can specify only one value.
        base_instance_name (str):
            The base instance name to use for instances
            in this group. The value must be 1-58 characters
            long. Instances are named by appending a hyphen
            and a random four-character string to the base
            instance name. The base instance name must
            comply with RFC1035.

            This field is a member of `oneof`_ ``_base_instance_name``.
        creation_timestamp (str):
            [Output Only] The creation timestamp for this managed
            instance group in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        current_actions (google.cloud.compute_v1.types.InstanceGroupManagerActionsSummary):
            [Output Only] The list of instance actions and the number of
            instances in this managed instance group that are scheduled
            for each of those actions.

            This field is a member of `oneof`_ ``_current_actions``.
        description (str):
            An optional description of this resource.

            This field is a member of `oneof`_ ``_description``.
        distribution_policy (google.cloud.compute_v1.types.DistributionPolicy):
            Policy specifying the intended distribution
            of managed instances across zones in a regional
            managed instance group.

            This field is a member of `oneof`_ ``_distribution_policy``.
        fingerprint (str):
            Fingerprint of this resource. This field may
            be used in optimistic locking. It will be
            ignored when inserting an InstanceGroupManager.
            An up-to-date fingerprint must be provided in
            order to update the InstanceGroupManager,
            otherwise the request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve an
            InstanceGroupManager.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] A unique identifier for this resource type.
            The server generates this identifier.

            This field is a member of `oneof`_ ``_id``.
        instance_group (str):
            [Output Only] The URL of the Instance Group resource.

            This field is a member of `oneof`_ ``_instance_group``.
        instance_template (str):
            The URL of the instance template that is
            specified for this managed instance group. The
            group uses this template to create all new
            instances in the managed instance group. The
            templates for existing instances in the group do
            not change unless you run recreateInstances, run
            applyUpdatesToInstances, or set the group's
            updatePolicy.type to PROACTIVE.

            This field is a member of `oneof`_ ``_instance_template``.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceGroupManager for managed instance groups.

            This field is a member of `oneof`_ ``_kind``.
        list_managed_instances_results (str):
            Pagination behavior of the
            listManagedInstances API method for this managed
            instance group. Check the
            ListManagedInstancesResults enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_list_managed_instances_results``.
        name (str):
            The name of the managed instance group. The
            name must be 1-63 characters long, and comply
            with RFC1035.

            This field is a member of `oneof`_ ``_name``.
        named_ports (MutableSequence[google.cloud.compute_v1.types.NamedPort]):
            Named ports configured for the Instance
            Groups complementary to this Instance Group
            Manager.
        region (str):
            [Output Only] The URL of the region where the managed
            instance group resides (for regional resources).

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] The URL for this managed instance group. The
            server defines this URL.

            This field is a member of `oneof`_ ``_self_link``.
        stateful_policy (google.cloud.compute_v1.types.StatefulPolicy):
            Stateful configuration for this Instanced
            Group Manager

            This field is a member of `oneof`_ ``_stateful_policy``.
        status (google.cloud.compute_v1.types.InstanceGroupManagerStatus):
            [Output Only] The status of this managed instance group.

            This field is a member of `oneof`_ ``_status``.
        target_pools (MutableSequence[str]):
            The URLs for all TargetPool resources to
            which instances in the instanceGroup field are
            added. The target pools automatically apply to
            all of the instances in the managed instance
            group.
        target_size (int):
            The target number of running instances for
            this managed instance group. You can reduce this
            number by using the instanceGroupManager
            deleteInstances or abandonInstances methods.
            Resizing the group also changes this number.

            This field is a member of `oneof`_ ``_target_size``.
        update_policy (google.cloud.compute_v1.types.InstanceGroupManagerUpdatePolicy):
            The update policy for this managed instance
            group.

            This field is a member of `oneof`_ ``_update_policy``.
        versions (MutableSequence[google.cloud.compute_v1.types.InstanceGroupManagerVersion]):
            Specifies the instance templates used by this
            managed instance group to create instances. Each
            version is defined by an instanceTemplate and a
            name. Every version can appear at most once per
            instance group. This field overrides the
            top-level instanceTemplate field. Read more
            about the relationships between these fields.
            Exactly one version must leave the targetSize
            field unset. That version will be applied to all
            remaining instances. For more information, read
            about canary updates.
        zone (str):
            [Output Only] The URL of a zone where the managed instance
            group is located (for zonal resources).

            This field is a member of `oneof`_ ``_zone``.
    """

    class ListManagedInstancesResults(proto.Enum):
        r"""Pagination behavior of the listManagedInstances API method
        for this managed instance group.

        Values:
            UNDEFINED_LIST_MANAGED_INSTANCES_RESULTS (0):
                A value indicating that the enum field is not
                set.
            PAGELESS (32183464):
                (Default) Pagination is disabled for the
                group's listManagedInstances API method.
                maxResults and pageToken query parameters are
                ignored and all instances are returned in a
                single response.
            PAGINATED (40190637):
                Pagination is enabled for the group's
                listManagedInstances API method. maxResults and
                pageToken query parameters are respected.
        """
        UNDEFINED_LIST_MANAGED_INSTANCES_RESULTS = 0
        PAGELESS = 32183464
        PAGINATED = 40190637

    auto_healing_policies: MutableSequence[
        "InstanceGroupManagerAutoHealingPolicy"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=456799109,
        message="InstanceGroupManagerAutoHealingPolicy",
    )
    base_instance_name: str = proto.Field(
        proto.STRING,
        number=389106439,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    current_actions: "InstanceGroupManagerActionsSummary" = proto.Field(
        proto.MESSAGE,
        number=164045879,
        optional=True,
        message="InstanceGroupManagerActionsSummary",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    distribution_policy: "DistributionPolicy" = proto.Field(
        proto.MESSAGE,
        number=534558541,
        optional=True,
        message="DistributionPolicy",
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
        optional=True,
    )
    instance_template: str = proto.Field(
        proto.STRING,
        number=309248228,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    list_managed_instances_results: str = proto.Field(
        proto.STRING,
        number=296047156,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    named_ports: MutableSequence["NamedPort"] = proto.RepeatedField(
        proto.MESSAGE,
        number=427598732,
        message="NamedPort",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    stateful_policy: "StatefulPolicy" = proto.Field(
        proto.MESSAGE,
        number=47538565,
        optional=True,
        message="StatefulPolicy",
    )
    status: "InstanceGroupManagerStatus" = proto.Field(
        proto.MESSAGE,
        number=181260274,
        optional=True,
        message="InstanceGroupManagerStatus",
    )
    target_pools: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=336072617,
    )
    target_size: int = proto.Field(
        proto.INT32,
        number=62880239,
        optional=True,
    )
    update_policy: "InstanceGroupManagerUpdatePolicy" = proto.Field(
        proto.MESSAGE,
        number=175809896,
        optional=True,
        message="InstanceGroupManagerUpdatePolicy",
    )
    versions: MutableSequence["InstanceGroupManagerVersion"] = proto.RepeatedField(
        proto.MESSAGE,
        number=162430619,
        message="InstanceGroupManagerVersion",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class InstanceGroupManagerActionsSummary(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        abandoning (int):
            [Output Only] The total number of instances in the managed
            instance group that are scheduled to be abandoned.
            Abandoning an instance removes it from the managed instance
            group without deleting it.

            This field is a member of `oneof`_ ``_abandoning``.
        creating (int):
            [Output Only] The number of instances in the managed
            instance group that are scheduled to be created or are
            currently being created. If the group fails to create any of
            these instances, it tries again until it creates the
            instance successfully. If you have disabled creation
            retries, this field will not be populated; instead, the
            creatingWithoutRetries field will be populated.

            This field is a member of `oneof`_ ``_creating``.
        creating_without_retries (int):
            [Output Only] The number of instances that the managed
            instance group will attempt to create. The group attempts to
            create each instance only once. If the group fails to create
            any of these instances, it decreases the group's targetSize
            value accordingly.

            This field is a member of `oneof`_ ``_creating_without_retries``.
        deleting (int):
            [Output Only] The number of instances in the managed
            instance group that are scheduled to be deleted or are
            currently being deleted.

            This field is a member of `oneof`_ ``_deleting``.
        none (int):
            [Output Only] The number of instances in the managed
            instance group that are running and have no scheduled
            actions.

            This field is a member of `oneof`_ ``_none``.
        recreating (int):
            [Output Only] The number of instances in the managed
            instance group that are scheduled to be recreated or are
            currently being being recreated. Recreating an instance
            deletes the existing root persistent disk and creates a new
            disk from the image that is defined in the instance
            template.

            This field is a member of `oneof`_ ``_recreating``.
        refreshing (int):
            [Output Only] The number of instances in the managed
            instance group that are being reconfigured with properties
            that do not require a restart or a recreate action. For
            example, setting or removing target pools for the instance.

            This field is a member of `oneof`_ ``_refreshing``.
        restarting (int):
            [Output Only] The number of instances in the managed
            instance group that are scheduled to be restarted or are
            currently being restarted.

            This field is a member of `oneof`_ ``_restarting``.
        resuming (int):
            [Output Only] The number of instances in the managed
            instance group that are scheduled to be resumed or are
            currently being resumed.

            This field is a member of `oneof`_ ``_resuming``.
        starting (int):
            [Output Only] The number of instances in the managed
            instance group that are scheduled to be started or are
            currently being started.

            This field is a member of `oneof`_ ``_starting``.
        stopping (int):
            [Output Only] The number of instances in the managed
            instance group that are scheduled to be stopped or are
            currently being stopped.

            This field is a member of `oneof`_ ``_stopping``.
        suspending (int):
            [Output Only] The number of instances in the managed
            instance group that are scheduled to be suspended or are
            currently being suspended.

            This field is a member of `oneof`_ ``_suspending``.
        verifying (int):
            [Output Only] The number of instances in the managed
            instance group that are being verified. See the
            managedInstances[].currentAction property in the
            listManagedInstances method documentation.

            This field is a member of `oneof`_ ``_verifying``.
    """

    abandoning: int = proto.Field(
        proto.INT32,
        number=440023373,
        optional=True,
    )
    creating: int = proto.Field(
        proto.INT32,
        number=209809081,
        optional=True,
    )
    creating_without_retries: int = proto.Field(
        proto.INT32,
        number=369916745,
        optional=True,
    )
    deleting: int = proto.Field(
        proto.INT32,
        number=282846120,
        optional=True,
    )
    none: int = proto.Field(
        proto.INT32,
        number=3387192,
        optional=True,
    )
    recreating: int = proto.Field(
        proto.INT32,
        number=339057132,
        optional=True,
    )
    refreshing: int = proto.Field(
        proto.INT32,
        number=215044903,
        optional=True,
    )
    restarting: int = proto.Field(
        proto.INT32,
        number=372312947,
        optional=True,
    )
    resuming: int = proto.Field(
        proto.INT32,
        number=201100714,
        optional=True,
    )
    starting: int = proto.Field(
        proto.INT32,
        number=243064896,
        optional=True,
    )
    stopping: int = proto.Field(
        proto.INT32,
        number=105035892,
        optional=True,
    )
    suspending: int = proto.Field(
        proto.INT32,
        number=29113894,
        optional=True,
    )
    verifying: int = proto.Field(
        proto.INT32,
        number=451612873,
        optional=True,
    )


class InstanceGroupManagerAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.InstanceGroupManagersScopedList]):
            A list of InstanceGroupManagersScopedList
            resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceGroupManagerAggregatedList for an aggregated
            list of managed instance groups.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "InstanceGroupManagersScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="InstanceGroupManagersScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceGroupManagerAutoHealingPolicy(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check (str):
            The URL for the health check that signals
            autohealing.

            This field is a member of `oneof`_ ``_health_check``.
        initial_delay_sec (int):
            The number of seconds that the managed instance group waits
            before it applies autohealing policies to new instances or
            recently recreated instances. This initial delay allows
            instances to initialize and run their startup scripts before
            the instance group determines that they are UNHEALTHY. This
            prevents the managed instance group from recreating its
            instances prematurely. This value must be from range [0,
            3600].

            This field is a member of `oneof`_ ``_initial_delay_sec``.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
        optional=True,
    )
    initial_delay_sec: int = proto.Field(
        proto.INT32,
        number=263207002,
        optional=True,
    )


class InstanceGroupManagerList(proto.Message):
    r"""[Output Only] A list of managed instance groups.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.InstanceGroupManager]):
            A list of InstanceGroupManager resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceGroupManagerList for a list of managed
            instance groups.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["InstanceGroupManager"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InstanceGroupManager",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceGroupManagerStatus(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaler (str):
            [Output Only] The URL of the Autoscaler that targets this
            instance group manager.

            This field is a member of `oneof`_ ``_autoscaler``.
        is_stable (bool):
            [Output Only] A bit indicating whether the managed instance
            group is in a stable state. A stable state means that: none
            of the instances in the managed instance group is currently
            undergoing any type of change (for example, creation,
            restart, or deletion); no future changes are scheduled for
            instances in the managed instance group; and the managed
            instance group itself is not being modified.

            This field is a member of `oneof`_ ``_is_stable``.
        stateful (google.cloud.compute_v1.types.InstanceGroupManagerStatusStateful):
            [Output Only] Stateful status of the given Instance Group
            Manager.

            This field is a member of `oneof`_ ``_stateful``.
        version_target (google.cloud.compute_v1.types.InstanceGroupManagerStatusVersionTarget):
            [Output Only] A status of consistency of Instances' versions
            with their target version specified by version field on
            Instance Group Manager.

            This field is a member of `oneof`_ ``_version_target``.
    """

    autoscaler: str = proto.Field(
        proto.STRING,
        number=517258967,
        optional=True,
    )
    is_stable: bool = proto.Field(
        proto.BOOL,
        number=108410864,
        optional=True,
    )
    stateful: "InstanceGroupManagerStatusStateful" = proto.Field(
        proto.MESSAGE,
        number=244462412,
        optional=True,
        message="InstanceGroupManagerStatusStateful",
    )
    version_target: "InstanceGroupManagerStatusVersionTarget" = proto.Field(
        proto.MESSAGE,
        number=289386200,
        optional=True,
        message="InstanceGroupManagerStatusVersionTarget",
    )


class InstanceGroupManagerStatusStateful(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        has_stateful_config (bool):
            [Output Only] A bit indicating whether the managed instance
            group has stateful configuration, that is, if you have
            configured any items in a stateful policy or in per-instance
            configs. The group might report that it has no stateful
            configuration even when there is still some preserved state
            on a managed instance, for example, if you have deleted all
            PICs but not yet applied those deletions.

            This field is a member of `oneof`_ ``_has_stateful_config``.
        per_instance_configs (google.cloud.compute_v1.types.InstanceGroupManagerStatusStatefulPerInstanceConfigs):
            [Output Only] Status of per-instance configurations on the
            instance.

            This field is a member of `oneof`_ ``_per_instance_configs``.
    """

    has_stateful_config: bool = proto.Field(
        proto.BOOL,
        number=110474224,
        optional=True,
    )
    per_instance_configs: "InstanceGroupManagerStatusStatefulPerInstanceConfigs" = (
        proto.Field(
            proto.MESSAGE,
            number=526265001,
            optional=True,
            message="InstanceGroupManagerStatusStatefulPerInstanceConfigs",
        )
    )


class InstanceGroupManagerStatusStatefulPerInstanceConfigs(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        all_effective (bool):
            A bit indicating if all of the group's
            per-instance configurations (listed in the
            output of a listPerInstanceConfigs API call)
            have status EFFECTIVE or there are no
            per-instance-configs.

            This field is a member of `oneof`_ ``_all_effective``.
    """

    all_effective: bool = proto.Field(
        proto.BOOL,
        number=516540553,
        optional=True,
    )


class InstanceGroupManagerStatusVersionTarget(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        is_reached (bool):
            [Output Only] A bit indicating whether version target has
            been reached in this managed instance group, i.e. all
            instances are in their target version. Instances' target
            version are specified by version field on Instance Group
            Manager.

            This field is a member of `oneof`_ ``_is_reached``.
    """

    is_reached: bool = proto.Field(
        proto.BOOL,
        number=433209149,
        optional=True,
    )


class InstanceGroupManagerUpdatePolicy(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_redistribution_type (str):
            The instance redistribution policy for
            regional managed instance groups. Valid values
            are: - PROACTIVE (default): The group attempts
            to maintain an even distribution of VM instances
            across zones in the region. - NONE: For
            non-autoscaled groups, proactive redistribution
            is disabled. Check the
            InstanceRedistributionType enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_instance_redistribution_type``.
        max_surge (google.cloud.compute_v1.types.FixedOrPercent):
            The maximum number of instances that can be
            created above the specified targetSize during
            the update process. This value can be either a
            fixed number or, if the group has 10 or more
            instances, a percentage. If you set a
            percentage, the number of instances is rounded
            if necessary. The default value for maxSurge is
            a fixed value equal to the number of zones in
            which the managed instance group operates. At
            least one of either maxSurge or maxUnavailable
            must be greater than 0. Learn more about
            maxSurge.

            This field is a member of `oneof`_ ``_max_surge``.
        max_unavailable (google.cloud.compute_v1.types.FixedOrPercent):
            The maximum number of instances that can be
            unavailable during the update process. An
            instance is considered available if all of the
            following conditions are satisfied: - The
            instance's status is RUNNING. - If there is a
            health check on the instance group, the
            instance's health check status must be HEALTHY
            at least once. If there is no health check on
            the group, then the instance only needs to have
            a status of RUNNING to be considered available.
            This value can be either a fixed number or, if
            the group has 10 or more instances, a
            percentage. If you set a percentage, the number
            of instances is rounded if necessary. The
            default value for maxUnavailable is a fixed
            value equal to the number of zones in which the
            managed instance group operates. At least one of
            either maxSurge or maxUnavailable must be
            greater than 0. Learn more about maxUnavailable.

            This field is a member of `oneof`_ ``_max_unavailable``.
        minimal_action (str):
            Minimal action to be taken on an instance.
            Use this option to minimize disruption as much
            as possible or to apply a more disruptive action
            than is necessary. - To limit disruption as much
            as possible, set the minimal action to REFRESH.
            If your update requires a more disruptive
            action, Compute Engine performs the necessary
            action to execute the update. - To apply a more
            disruptive action than is strictly necessary,
            set the minimal action to RESTART or REPLACE.
            For example, Compute Engine does not need to
            restart a VM to change its metadata. But if your
            application reads instance metadata only when a
            VM is restarted, you can set the minimal action
            to RESTART in order to pick up metadata changes.
            Check the MinimalAction enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_minimal_action``.
        most_disruptive_allowed_action (str):
            Most disruptive action that is allowed to be
            taken on an instance. You can specify either
            NONE to forbid any actions, REFRESH to allow
            actions that do not need instance restart,
            RESTART to allow actions that can be applied
            without instance replacing or REPLACE to allow
            all possible actions. If the Updater determines
            that the minimal update action needed is more
            disruptive than most disruptive allowed action
            you specify it will not perform the update at
            all. Check the MostDisruptiveAllowedAction enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_most_disruptive_allowed_action``.
        replacement_method (str):
            What action should be used to replace instances. See
            minimal_action.REPLACE Check the ReplacementMethod enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_replacement_method``.
        type_ (str):
            The type of update process. You can specify
            either PROACTIVE so that the instance group
            manager proactively executes actions in order to
            bring instances to their target versions or
            OPPORTUNISTIC so that no action is proactively
            executed but the update will be performed as
            part of other actions (for example, resizes or
            recreateInstances calls). Check the Type enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class InstanceRedistributionType(proto.Enum):
        r"""The instance redistribution policy for regional managed
        instance groups. Valid values are: - PROACTIVE (default): The
        group attempts to maintain an even distribution of VM instances
        across zones in the region. - NONE: For non-autoscaled groups,
        proactive redistribution is disabled. Additional supported
        values which may be not listed in the enum directly due to
        technical reasons: NONE
        PROACTIVE

        Values:
            UNDEFINED_INSTANCE_REDISTRIBUTION_TYPE (0):
                A value indicating that the enum field is not
                set.
        """
        UNDEFINED_INSTANCE_REDISTRIBUTION_TYPE = 0

    class MinimalAction(proto.Enum):
        r"""Minimal action to be taken on an instance. Use this option to
        minimize disruption as much as possible or to apply a more
        disruptive action than is necessary. - To limit disruption as
        much as possible, set the minimal action to REFRESH. If your
        update requires a more disruptive action, Compute Engine
        performs the necessary action to execute the update. - To apply
        a more disruptive action than is strictly necessary, set the
        minimal action to RESTART or REPLACE. For example, Compute
        Engine does not need to restart a VM to change its metadata. But
        if your application reads instance metadata only when a VM is
        restarted, you can set the minimal action to RESTART in order to
        pick up metadata changes. Additional supported values which may
        be not listed in the enum directly due to technical reasons:
        NONE
        REFRESH
        REPLACE
        RESTART

        Values:
            UNDEFINED_MINIMAL_ACTION (0):
                A value indicating that the enum field is not
                set.
        """
        UNDEFINED_MINIMAL_ACTION = 0

    class MostDisruptiveAllowedAction(proto.Enum):
        r"""Most disruptive action that is allowed to be taken on an
        instance. You can specify either NONE to forbid any actions,
        REFRESH to allow actions that do not need instance restart,
        RESTART to allow actions that can be applied without instance
        replacing or REPLACE to allow all possible actions. If the
        Updater determines that the minimal update action needed is more
        disruptive than most disruptive allowed action you specify it
        will not perform the update at all. Additional supported values
        which may be not listed in the enum directly due to technical
        reasons: NONE
        REFRESH
        REPLACE
        RESTART

        Values:
            UNDEFINED_MOST_DISRUPTIVE_ALLOWED_ACTION (0):
                A value indicating that the enum field is not
                set.
        """
        UNDEFINED_MOST_DISRUPTIVE_ALLOWED_ACTION = 0

    class ReplacementMethod(proto.Enum):
        r"""What action should be used to replace instances. See
        minimal_action.REPLACE

        Values:
            UNDEFINED_REPLACEMENT_METHOD (0):
                A value indicating that the enum field is not
                set.
            RECREATE (522644719):
                Instances will be recreated (with the same
                name)
            SUBSTITUTE (280924314):
                Default option: instances will be deleted and
                created (with a new name)
        """
        UNDEFINED_REPLACEMENT_METHOD = 0
        RECREATE = 522644719
        SUBSTITUTE = 280924314

    class Type(proto.Enum):
        r"""The type of update process. You can specify either PROACTIVE
        so that the instance group manager proactively executes actions
        in order to bring instances to their target versions or
        OPPORTUNISTIC so that no action is proactively executed but the
        update will be performed as part of other actions (for example,
        resizes or recreateInstances calls). Additional supported values
        which may be not listed in the enum directly due to technical
        reasons: PROACTIVE

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            OPPORTUNISTIC (429530089):
                No action is being proactively performed in
                order to bring this IGM to its target version
                distribution (regardless of whether this
                distribution is expressed using instanceTemplate
                or versions field).
        """
        UNDEFINED_TYPE = 0
        OPPORTUNISTIC = 429530089

    instance_redistribution_type: str = proto.Field(
        proto.STRING,
        number=292630424,
        optional=True,
    )
    max_surge: "FixedOrPercent" = proto.Field(
        proto.MESSAGE,
        number=302572691,
        optional=True,
        message="FixedOrPercent",
    )
    max_unavailable: "FixedOrPercent" = proto.Field(
        proto.MESSAGE,
        number=404940277,
        optional=True,
        message="FixedOrPercent",
    )
    minimal_action: str = proto.Field(
        proto.STRING,
        number=270567060,
        optional=True,
    )
    most_disruptive_allowed_action: str = proto.Field(
        proto.STRING,
        number=66103053,
        optional=True,
    )
    replacement_method: str = proto.Field(
        proto.STRING,
        number=505931694,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class InstanceGroupManagerVersion(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_template (str):
            The URL of the instance template that is specified for this
            managed instance group. The group uses this template to
            create new instances in the managed instance group until the
            ``targetSize`` for this version is reached. The templates
            for existing instances in the group do not change unless you
            run recreateInstances, run applyUpdatesToInstances, or set
            the group's updatePolicy.type to PROACTIVE; in those cases,
            existing instances are updated until the ``targetSize`` for
            this version is reached.

            This field is a member of `oneof`_ ``_instance_template``.
        name (str):
            Name of the version. Unique among all
            versions in the scope of this managed instance
            group.

            This field is a member of `oneof`_ ``_name``.
        target_size (google.cloud.compute_v1.types.FixedOrPercent):
            Specifies the intended number of instances to be created
            from the instanceTemplate. The final number of instances
            created from the template will be equal to: - If expressed
            as a fixed number, the minimum of either targetSize.fixed or
            instanceGroupManager.targetSize is used. - if expressed as a
            percent, the targetSize would be (targetSize.percent/100 \*
            InstanceGroupManager.targetSize) If there is a remainder,
            the number is rounded. If unset, this version will update
            any remaining instances not updated by another version. Read
            Starting a canary update for more information.

            This field is a member of `oneof`_ ``_target_size``.
    """

    instance_template: str = proto.Field(
        proto.STRING,
        number=309248228,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    target_size: "FixedOrPercent" = proto.Field(
        proto.MESSAGE,
        number=62880239,
        optional=True,
        message="FixedOrPercent",
    )


class InstanceGroupManagersAbandonInstancesRequest(proto.Message):
    r"""

    Attributes:
        instances (MutableSequence[str]):
            The URLs of one or more instances to abandon. This can be a
            full URL or a partial URL, such as
            zones/[ZONE]/instances/[INSTANCE_NAME].
    """

    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )


class InstanceGroupManagersApplyUpdatesRequest(proto.Message):
    r"""InstanceGroupManagers.applyUpdatesToInstances

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        all_instances (bool):
            Flag to update all instances instead of
            specified list of “instances”. If the flag is
            set to true then the instances may not be
            specified in the request.

            This field is a member of `oneof`_ ``_all_instances``.
        instances (MutableSequence[str]):
            The list of URLs of one or more instances for which you want
            to apply updates. Each URL can be a full URL or a partial
            URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].
        minimal_action (str):
            The minimal action that you want to perform
            on each instance during the update: - REPLACE:
            At minimum, delete the instance and create it
            again. - RESTART: Stop the instance and start it
            again. - REFRESH: Do not stop the instance. -
            NONE: Do not disrupt the instance at all. By
            default, the minimum action is NONE. If your
            update requires a more disruptive action than
            you set with this flag, the necessary action is
            performed to execute the update. Check the
            MinimalAction enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_minimal_action``.
        most_disruptive_allowed_action (str):
            The most disruptive action that you want to
            perform on each instance during the update: -
            REPLACE: Delete the instance and create it
            again. - RESTART: Stop the instance and start it
            again. - REFRESH: Do not stop the instance. -
            NONE: Do not disrupt the instance at all. By
            default, the most disruptive allowed action is
            REPLACE. If your update requires a more
            disruptive action than you set with this flag,
            the update request will fail. Check the
            MostDisruptiveAllowedAction enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_most_disruptive_allowed_action``.
    """

    class MinimalAction(proto.Enum):
        r"""The minimal action that you want to perform on each instance
        during the update: - REPLACE: At minimum, delete the instance
        and create it again. - RESTART: Stop the instance and start it
        again. - REFRESH: Do not stop the instance. - NONE: Do not
        disrupt the instance at all. By default, the minimum action is
        NONE. If your update requires a more disruptive action than you
        set with this flag, the necessary action is performed to execute
        the update. Additional supported values which may be not listed
        in the enum directly due to technical reasons: NONE
        REFRESH
        REPLACE
        RESTART

        Values:
            UNDEFINED_MINIMAL_ACTION (0):
                A value indicating that the enum field is not
                set.
        """
        UNDEFINED_MINIMAL_ACTION = 0

    class MostDisruptiveAllowedAction(proto.Enum):
        r"""The most disruptive action that you want to perform on each
        instance during the update: - REPLACE: Delete the instance and
        create it again. - RESTART: Stop the instance and start it
        again. - REFRESH: Do not stop the instance. - NONE: Do not
        disrupt the instance at all. By default, the most disruptive
        allowed action is REPLACE. If your update requires a more
        disruptive action than you set with this flag, the update
        request will fail. Additional supported values which may be not
        listed in the enum directly due to technical reasons: NONE
        REFRESH
        REPLACE
        RESTART

        Values:
            UNDEFINED_MOST_DISRUPTIVE_ALLOWED_ACTION (0):
                A value indicating that the enum field is not
                set.
        """
        UNDEFINED_MOST_DISRUPTIVE_ALLOWED_ACTION = 0

    all_instances: bool = proto.Field(
        proto.BOOL,
        number=403676512,
        optional=True,
    )
    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )
    minimal_action: str = proto.Field(
        proto.STRING,
        number=270567060,
        optional=True,
    )
    most_disruptive_allowed_action: str = proto.Field(
        proto.STRING,
        number=66103053,
        optional=True,
    )


class InstanceGroupManagersCreateInstancesRequest(proto.Message):
    r"""InstanceGroupManagers.createInstances

    Attributes:
        instances (MutableSequence[google.cloud.compute_v1.types.PerInstanceConfig]):
            [Required] List of specifications of per-instance configs.
    """

    instances: MutableSequence["PerInstanceConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=29097598,
        message="PerInstanceConfig",
    )


class InstanceGroupManagersDeleteInstancesRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instances (MutableSequence[str]):
            The URLs of one or more instances to delete. This can be a
            full URL or a partial URL, such as
            zones/[ZONE]/instances/[INSTANCE_NAME].
        skip_instances_on_validation_error (bool):
            Specifies whether the request should proceed despite the
            inclusion of instances that are not members of the group or
            that are already in the process of being deleted or
            abandoned. If this field is set to ``false`` and such an
            instance is specified in the request, the operation fails.
            The operation always fails if the request contains a
            malformed instance URL or a reference to an instance that
            exists in a zone or region other than the group's zone or
            region.

            This field is a member of `oneof`_ ``_skip_instances_on_validation_error``.
    """

    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )
    skip_instances_on_validation_error: bool = proto.Field(
        proto.BOOL,
        number=40631073,
        optional=True,
    )


class InstanceGroupManagersDeletePerInstanceConfigsReq(proto.Message):
    r"""InstanceGroupManagers.deletePerInstanceConfigs

    Attributes:
        names (MutableSequence[str]):
            The list of instance names for which we want
            to delete per-instance configs on this managed
            instance group.
    """

    names: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=104585032,
    )


class InstanceGroupManagersListErrorsResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        items (MutableSequence[google.cloud.compute_v1.types.InstanceManagedByIgmError]):
            [Output Only] The list of errors of the managed instance
            group.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
    """

    @property
    def raw_page(self):
        return self

    items: MutableSequence["InstanceManagedByIgmError"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InstanceManagedByIgmError",
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )


class InstanceGroupManagersListManagedInstancesResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        managed_instances (MutableSequence[google.cloud.compute_v1.types.ManagedInstance]):
            [Output Only] The list of instances in the managed instance
            group.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
    """

    @property
    def raw_page(self):
        return self

    managed_instances: MutableSequence["ManagedInstance"] = proto.RepeatedField(
        proto.MESSAGE,
        number=336219614,
        message="ManagedInstance",
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )


class InstanceGroupManagersListPerInstanceConfigsResp(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        items (MutableSequence[google.cloud.compute_v1.types.PerInstanceConfig]):
            [Output Only] The list of PerInstanceConfig.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    items: MutableSequence["PerInstanceConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="PerInstanceConfig",
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceGroupManagersPatchPerInstanceConfigsReq(proto.Message):
    r"""InstanceGroupManagers.patchPerInstanceConfigs

    Attributes:
        per_instance_configs (MutableSequence[google.cloud.compute_v1.types.PerInstanceConfig]):
            The list of per-instance configurations to
            insert or patch on this managed instance group.
    """

    per_instance_configs: MutableSequence["PerInstanceConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=526265001,
        message="PerInstanceConfig",
    )


class InstanceGroupManagersRecreateInstancesRequest(proto.Message):
    r"""

    Attributes:
        instances (MutableSequence[str]):
            The URLs of one or more instances to recreate. This can be a
            full URL or a partial URL, such as
            zones/[ZONE]/instances/[INSTANCE_NAME].
    """

    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )


class InstanceGroupManagersScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_managers (MutableSequence[google.cloud.compute_v1.types.InstanceGroupManager]):
            [Output Only] The list of managed instance groups that are
            contained in the specified project and zone.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] The warning that replaces the list of managed
            instance groups when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    instance_group_managers: MutableSequence[
        "InstanceGroupManager"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=214072592,
        message="InstanceGroupManager",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceGroupManagersSetInstanceTemplateRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_template (str):
            The URL of the instance template that is
            specified for this managed instance group. The
            group uses this template to create all new
            instances in the managed instance group. The
            templates for existing instances in the group do
            not change unless you run recreateInstances, run
            applyUpdatesToInstances, or set the group's
            updatePolicy.type to PROACTIVE.

            This field is a member of `oneof`_ ``_instance_template``.
    """

    instance_template: str = proto.Field(
        proto.STRING,
        number=309248228,
        optional=True,
    )


class InstanceGroupManagersSetTargetPoolsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        fingerprint (str):
            The fingerprint of the target pools
            information. Use this optional property to
            prevent conflicts when multiple users change the
            target pools settings concurrently. Obtain the
            fingerprint with the instanceGroupManagers.get
            method. Then, include the fingerprint in your
            request to ensure that you do not overwrite
            changes that were applied from another
            concurrent request.

            This field is a member of `oneof`_ ``_fingerprint``.
        target_pools (MutableSequence[str]):
            The list of target pool URLs that instances
            in this managed instance group belong to. The
            managed instance group applies these target
            pools to all of the instances in the group.
            Existing instances and new instances in the
            group all receive these target pool settings.
    """

    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    target_pools: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=336072617,
    )


class InstanceGroupManagersUpdatePerInstanceConfigsReq(proto.Message):
    r"""InstanceGroupManagers.updatePerInstanceConfigs

    Attributes:
        per_instance_configs (MutableSequence[google.cloud.compute_v1.types.PerInstanceConfig]):
            The list of per-instance configurations to
            insert or patch on this managed instance group.
    """

    per_instance_configs: MutableSequence["PerInstanceConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=526265001,
        message="PerInstanceConfig",
    )


class InstanceGroupsAddInstancesRequest(proto.Message):
    r"""

    Attributes:
        instances (MutableSequence[google.cloud.compute_v1.types.InstanceReference]):
            The list of instances to add to the instance
            group.
    """

    instances: MutableSequence["InstanceReference"] = proto.RepeatedField(
        proto.MESSAGE,
        number=29097598,
        message="InstanceReference",
    )


class InstanceGroupsListInstances(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.InstanceWithNamedPorts]):
            A list of InstanceWithNamedPorts resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceGroupsListInstances for the list of
            instances in the specified instance group.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["InstanceWithNamedPorts"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InstanceWithNamedPorts",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceGroupsListInstancesRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_state (str):
            A filter for the state of the instances in
            the instance group. Valid options are ALL or
            RUNNING. If you do not specify this parameter
            the list includes all instances regardless of
            their state. Check the InstanceState enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_instance_state``.
    """

    class InstanceState(proto.Enum):
        r"""A filter for the state of the instances in the instance
        group. Valid options are ALL or RUNNING. If you do not specify
        this parameter the list includes all instances regardless of
        their state.

        Values:
            UNDEFINED_INSTANCE_STATE (0):
                A value indicating that the enum field is not
                set.
            ALL (64897):
                Includes all instances in the generated list
                regardless of their state.
            RUNNING (121282975):
                Includes instances in the generated list only
                if they have a RUNNING state.
        """
        UNDEFINED_INSTANCE_STATE = 0
        ALL = 64897
        RUNNING = 121282975

    instance_state: str = proto.Field(
        proto.STRING,
        number=92223591,
        optional=True,
    )


class InstanceGroupsRemoveInstancesRequest(proto.Message):
    r"""

    Attributes:
        instances (MutableSequence[google.cloud.compute_v1.types.InstanceReference]):
            The list of instances to remove from the
            instance group.
    """

    instances: MutableSequence["InstanceReference"] = proto.RepeatedField(
        proto.MESSAGE,
        number=29097598,
        message="InstanceReference",
    )


class InstanceGroupsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_groups (MutableSequence[google.cloud.compute_v1.types.InstanceGroup]):
            [Output Only] The list of instance groups that are contained
            in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] An informational warning that replaces the
            list of instance groups when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    instance_groups: MutableSequence["InstanceGroup"] = proto.RepeatedField(
        proto.MESSAGE,
        number=366469310,
        message="InstanceGroup",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceGroupsSetNamedPortsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        fingerprint (str):
            The fingerprint of the named ports
            information for this instance group. Use this
            optional property to prevent conflicts when
            multiple users change the named ports settings
            concurrently. Obtain the fingerprint with the
            instanceGroups.get method. Then, include the
            fingerprint in your request to ensure that you
            do not overwrite changes that were applied from
            another concurrent request. A request with an
            incorrect fingerprint will fail with error 412
            conditionNotMet.

            This field is a member of `oneof`_ ``_fingerprint``.
        named_ports (MutableSequence[google.cloud.compute_v1.types.NamedPort]):
            The list of named ports to set for this
            instance group.
    """

    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    named_ports: MutableSequence["NamedPort"] = proto.RepeatedField(
        proto.MESSAGE,
        number=427598732,
        message="NamedPort",
    )


class InstanceList(proto.Message):
    r"""Contains a list of instances.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Instance]):
            A list of Instance resources.
        kind (str):
            [Output Only] Type of resource. Always compute#instanceList
            for lists of Instance resources.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Instance"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Instance",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceListReferrers(proto.Message):
    r"""Contains a list of instance referrers.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Reference]):
            A list of Reference resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#instanceListReferrers for lists of Instance
            referrers.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Reference"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Reference",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceManagedByIgmError(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        error (google.cloud.compute_v1.types.InstanceManagedByIgmErrorManagedInstanceError):
            [Output Only] Contents of the error.

            This field is a member of `oneof`_ ``_error``.
        instance_action_details (google.cloud.compute_v1.types.InstanceManagedByIgmErrorInstanceActionDetails):
            [Output Only] Details of the instance action that triggered
            this error. May be null, if the error was not caused by an
            action on an instance. This field is optional.

            This field is a member of `oneof`_ ``_instance_action_details``.
        timestamp (str):
            [Output Only] The time that this error occurred. This value
            is in RFC3339 text format.

            This field is a member of `oneof`_ ``_timestamp``.
    """

    error: "InstanceManagedByIgmErrorManagedInstanceError" = proto.Field(
        proto.MESSAGE,
        number=96784904,
        optional=True,
        message="InstanceManagedByIgmErrorManagedInstanceError",
    )
    instance_action_details: "InstanceManagedByIgmErrorInstanceActionDetails" = (
        proto.Field(
            proto.MESSAGE,
            number=292224547,
            optional=True,
            message="InstanceManagedByIgmErrorInstanceActionDetails",
        )
    )
    timestamp: str = proto.Field(
        proto.STRING,
        number=55126294,
        optional=True,
    )


class InstanceManagedByIgmErrorInstanceActionDetails(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        action (str):
            [Output Only] Action that managed instance group was
            executing on the instance when the error occurred. Possible
            values: Check the Action enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_action``.
        instance (str):
            [Output Only] The URL of the instance. The URL can be set
            even if the instance has not yet been created.

            This field is a member of `oneof`_ ``_instance``.
        version (google.cloud.compute_v1.types.ManagedInstanceVersion):
            [Output Only] Version this instance was created from, or was
            being created from, but the creation failed. Corresponds to
            one of the versions that were set on the Instance Group
            Manager resource at the time this instance was being
            created.

            This field is a member of `oneof`_ ``_version``.
    """

    class Action(proto.Enum):
        r"""[Output Only] Action that managed instance group was executing on
        the instance when the error occurred. Possible values:

        Values:
            UNDEFINED_ACTION (0):
                A value indicating that the enum field is not
                set.
            ABANDONING (388244813):
                The managed instance group is abandoning this
                instance. The instance will be removed from the
                instance group and from any target pools that
                are associated with this group.
            CREATING (455564985):
                The managed instance group is creating this
                instance. If the group fails to create this
                instance, it will try again until it is
                successful.
            CREATING_WITHOUT_RETRIES (428843785):
                The managed instance group is attempting to
                create this instance only once. If the group
                fails to create this instance, it does not try
                again and the group's targetSize value is
                decreased.
            DELETING (528602024):
                The managed instance group is permanently
                deleting this instance.
            NONE (2402104):
                The managed instance group has not scheduled
                any actions for this instance.
            RECREATING (287278572):
                The managed instance group is recreating this
                instance.
            REFRESHING (163266343):
                The managed instance group is applying
                configuration changes to the instance without
                stopping it. For example, the group can update
                the target pool list for an instance without
                stopping that instance.
            RESTARTING (320534387):
                The managed instance group is restarting this
                instance.
            RESUMING (446856618):
                The managed instance group is resuming this
                instance.
            STARTING (488820800):
                The managed instance group is starting this
                instance.
            STOPPING (350791796):
                The managed instance group is stopping this
                instance.
            SUSPENDING (514206246):
                The managed instance group is suspending this
                instance.
            VERIFYING (16982185):
                The managed instance group is verifying this
                already created instance. Verification happens
                every time the instance is (re)created or
                restarted and consists of: 1. Waiting until
                health check specified as part of this managed
                instance group's autohealing policy reports
                HEALTHY. Note: Applies only if autohealing
                policy has a health check specified 2. Waiting
                for addition verification steps performed as
                post-instance creation (subject to future
                extensions).
        """
        UNDEFINED_ACTION = 0
        ABANDONING = 388244813
        CREATING = 455564985
        CREATING_WITHOUT_RETRIES = 428843785
        DELETING = 528602024
        NONE = 2402104
        RECREATING = 287278572
        REFRESHING = 163266343
        RESTARTING = 320534387
        RESUMING = 446856618
        STARTING = 488820800
        STOPPING = 350791796
        SUSPENDING = 514206246
        VERIFYING = 16982185

    action: str = proto.Field(
        proto.STRING,
        number=187661878,
        optional=True,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
        optional=True,
    )
    version: "ManagedInstanceVersion" = proto.Field(
        proto.MESSAGE,
        number=351608024,
        optional=True,
        message="ManagedInstanceVersion",
    )


class InstanceManagedByIgmErrorManagedInstanceError(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        code (str):
            [Output Only] Error code.

            This field is a member of `oneof`_ ``_code``.
        message (str):
            [Output Only] Error message.

            This field is a member of `oneof`_ ``_message``.
    """

    code: str = proto.Field(
        proto.STRING,
        number=3059181,
        optional=True,
    )
    message: str = proto.Field(
        proto.STRING,
        number=418054151,
        optional=True,
    )


class InstanceMoveRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        destination_zone (str):
            The URL of the destination zone to move the
            instance. This can be a full or partial URL. For
            example, the following are all valid URLs to a
            zone: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            - projects/project/zones/zone - zones/zone

            This field is a member of `oneof`_ ``_destination_zone``.
        target_instance (str):
            The URL of the target instance to move. This
            can be a full or partial URL. For example, the
            following are all valid URLs to an instance: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /instances/instance -
            projects/project/zones/zone/instances/instance -
            zones/zone/instances/instance

            This field is a member of `oneof`_ ``_target_instance``.
    """

    destination_zone: str = proto.Field(
        proto.STRING,
        number=131854653,
        optional=True,
    )
    target_instance: str = proto.Field(
        proto.STRING,
        number=289769347,
        optional=True,
    )


class InstanceParams(proto.Message):
    r"""Additional instance params.

    Attributes:
        resource_manager_tags (MutableMapping[str, str]):
            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.
    """

    resource_manager_tags: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=377671164,
    )


class InstanceProperties(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        advanced_machine_features (google.cloud.compute_v1.types.AdvancedMachineFeatures):
            Controls for advanced machine-related
            behavior features. Note that for MachineImage,
            this is not supported yet.

            This field is a member of `oneof`_ ``_advanced_machine_features``.
        can_ip_forward (bool):
            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.

            This field is a member of `oneof`_ ``_can_ip_forward``.
        confidential_instance_config (google.cloud.compute_v1.types.ConfidentialInstanceConfig):
            Specifies the Confidential Instance options.
            Note that for MachineImage, this is not
            supported yet.

            This field is a member of `oneof`_ ``_confidential_instance_config``.
        description (str):
            An optional text description for the
            instances that are created from these
            properties.

            This field is a member of `oneof`_ ``_description``.
        disks (MutableSequence[google.cloud.compute_v1.types.AttachedDisk]):
            An array of disks that are associated with
            the instances that are created from these
            properties.
        guest_accelerators (MutableSequence[google.cloud.compute_v1.types.AcceleratorConfig]):
            A list of guest accelerator cards' type and
            count to use for instances created from these
            properties.
        key_revocation_action_type (str):
            KeyRevocationActionType of the instance.
            Supported options are "STOP" and "NONE". The
            default value is "NONE" if it is not specified.
            Check the KeyRevocationActionType enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_key_revocation_action_type``.
        labels (MutableMapping[str, str]):
            Labels to apply to instances that are created
            from these properties.
        machine_type (str):
            The machine type to use for instances that
            are created from these properties.

            This field is a member of `oneof`_ ``_machine_type``.
        metadata (google.cloud.compute_v1.types.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.

            This field is a member of `oneof`_ ``_metadata``.
        min_cpu_platform (str):
            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.

            This field is a member of `oneof`_ ``_min_cpu_platform``.
        network_interfaces (MutableSequence[google.cloud.compute_v1.types.NetworkInterface]):
            An array of network access configurations for
            this interface.
        network_performance_config (google.cloud.compute_v1.types.NetworkPerformanceConfig):
            Note that for MachineImage, this is not
            supported yet.

            This field is a member of `oneof`_ ``_network_performance_config``.
        private_ipv6_google_access (str):
            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. Check the
            PrivateIpv6GoogleAccess enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_private_ipv6_google_access``.
        reservation_affinity (google.cloud.compute_v1.types.ReservationAffinity):
            Specifies the reservations that instances can
            consume from. Note that for MachineImage, this
            is not supported yet.

            This field is a member of `oneof`_ ``_reservation_affinity``.
        resource_manager_tags (MutableMapping[str, str]):
            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.
        resource_policies (MutableSequence[str]):
            Resource policies (names, not URLs) applied
            to instances created from these properties. Note
            that for MachineImage, this is not supported
            yet.
        scheduling (google.cloud.compute_v1.types.Scheduling):
            Specifies the scheduling options for the
            instances that are created from these
            properties.

            This field is a member of `oneof`_ ``_scheduling``.
        service_accounts (MutableSequence[google.cloud.compute_v1.types.ServiceAccount]):
            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.
        shielded_instance_config (google.cloud.compute_v1.types.ShieldedInstanceConfig):
            Note that for MachineImage, this is not
            supported yet.

            This field is a member of `oneof`_ ``_shielded_instance_config``.
        tags (google.cloud.compute_v1.types.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.

            This field is a member of `oneof`_ ``_tags``.
    """

    class KeyRevocationActionType(proto.Enum):
        r"""KeyRevocationActionType of the instance. Supported options
        are "STOP" and "NONE". The default value is "NONE" if it is not
        specified.

        Values:
            UNDEFINED_KEY_REVOCATION_ACTION_TYPE (0):
                A value indicating that the enum field is not
                set.
            KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED (467110106):
                Default value. This value is unused.
            NONE (2402104):
                Indicates user chose no operation.
            STOP (2555906):
                Indicates user chose to opt for VM shutdown
                on key revocation.
        """
        UNDEFINED_KEY_REVOCATION_ACTION_TYPE = 0
        KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED = 467110106
        NONE = 2402104
        STOP = 2555906

    class PrivateIpv6GoogleAccess(proto.Enum):
        r"""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.

        Values:
            UNDEFINED_PRIVATE_IPV6_GOOGLE_ACCESS (0):
                A value indicating that the enum field is not
                set.
            ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE (427975994):
                Bidirectional private IPv6 access to/from
                Google services. If specified, the subnetwork
                who is attached to the instance's default
                network interface will be assigned an internal
                IPv6 prefix if it doesn't have before.
            ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE (288210263):
                Outbound private IPv6 access from VMs in this
                subnet to Google services. If specified, the
                subnetwork who is attached to the instance's
                default network interface will be assigned an
                internal IPv6 prefix if it doesn't have before.
            INHERIT_FROM_SUBNETWORK (530256959):
                Each network interface inherits
                PrivateIpv6GoogleAccess from its subnetwork.
        """
        UNDEFINED_PRIVATE_IPV6_GOOGLE_ACCESS = 0
        ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE = 427975994
        ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE = 288210263
        INHERIT_FROM_SUBNETWORK = 530256959

    advanced_machine_features: "AdvancedMachineFeatures" = proto.Field(
        proto.MESSAGE,
        number=409646002,
        optional=True,
        message="AdvancedMachineFeatures",
    )
    can_ip_forward: bool = proto.Field(
        proto.BOOL,
        number=467731324,
        optional=True,
    )
    confidential_instance_config: "ConfidentialInstanceConfig" = proto.Field(
        proto.MESSAGE,
        number=490637685,
        optional=True,
        message="ConfidentialInstanceConfig",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    disks: MutableSequence["AttachedDisk"] = proto.RepeatedField(
        proto.MESSAGE,
        number=95594102,
        message="AttachedDisk",
    )
    guest_accelerators: MutableSequence["AcceleratorConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=463595119,
        message="AcceleratorConfig",
    )
    key_revocation_action_type: str = proto.Field(
        proto.STRING,
        number=235941474,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    machine_type: str = proto.Field(
        proto.STRING,
        number=227711026,
        optional=True,
    )
    metadata: "Metadata" = proto.Field(
        proto.MESSAGE,
        number=86866735,
        optional=True,
        message="Metadata",
    )
    min_cpu_platform: str = proto.Field(
        proto.STRING,
        number=242912759,
        optional=True,
    )
    network_interfaces: MutableSequence["NetworkInterface"] = proto.RepeatedField(
        proto.MESSAGE,
        number=52735243,
        message="NetworkInterface",
    )
    network_performance_config: "NetworkPerformanceConfig" = proto.Field(
        proto.MESSAGE,
        number=398330850,
        optional=True,
        message="NetworkPerformanceConfig",
    )
    private_ipv6_google_access: str = proto.Field(
        proto.STRING,
        number=48277006,
        optional=True,
    )
    reservation_affinity: "ReservationAffinity" = proto.Field(
        proto.MESSAGE,
        number=157850683,
        optional=True,
        message="ReservationAffinity",
    )
    resource_manager_tags: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=377671164,
    )
    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )
    scheduling: "Scheduling" = proto.Field(
        proto.MESSAGE,
        number=386688404,
        optional=True,
        message="Scheduling",
    )
    service_accounts: MutableSequence["ServiceAccount"] = proto.RepeatedField(
        proto.MESSAGE,
        number=277537328,
        message="ServiceAccount",
    )
    shielded_instance_config: "ShieldedInstanceConfig" = proto.Field(
        proto.MESSAGE,
        number=12862901,
        optional=True,
        message="ShieldedInstanceConfig",
    )
    tags: "Tags" = proto.Field(
        proto.MESSAGE,
        number=3552281,
        optional=True,
        message="Tags",
    )


class InstanceReference(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            The URL for a specific instance. @required
            compute.instancegroups.addInstances/removeInstances

            This field is a member of `oneof`_ ``_instance``.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
        optional=True,
    )


class InstanceTemplate(proto.Message):
    r"""Represents an Instance Template resource. You can use
    instance templates to create VM instances and managed instance
    groups. For more information, read Instance Templates.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] The creation timestamp for this instance
            template in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] A unique identifier for this instance
            template. The server defines this identifier.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceTemplate for instance templates.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource; provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        properties (google.cloud.compute_v1.types.InstanceProperties):
            The instance properties for this instance
            template.

            This field is a member of `oneof`_ ``_properties``.
        region (str):
            [Output Only] URL of the region where the instance template
            resides. Only applicable for regional resources.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] The URL for this instance template. The server
            defines this URL.

            This field is a member of `oneof`_ ``_self_link``.
        source_instance (str):
            The source instance used to create the
            template. You can provide this as a partial or
            full URL to the resource. For example, the
            following are valid values: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /instances/instance -
            projects/project/zones/zone/instances/instance

            This field is a member of `oneof`_ ``_source_instance``.
        source_instance_params (google.cloud.compute_v1.types.SourceInstanceParams):
            The source instance params to use to create
            this instance template.

            This field is a member of `oneof`_ ``_source_instance_params``.
    """

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    properties: "InstanceProperties" = proto.Field(
        proto.MESSAGE,
        number=147688755,
        optional=True,
        message="InstanceProperties",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    source_instance: str = proto.Field(
        proto.STRING,
        number=396315705,
        optional=True,
    )
    source_instance_params: "SourceInstanceParams" = proto.Field(
        proto.MESSAGE,
        number=135342156,
        optional=True,
        message="SourceInstanceParams",
    )


class InstanceTemplateAggregatedList(proto.Message):
    r"""Contains a list of InstanceTemplatesScopedList.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.InstanceTemplatesScopedList]):
            A list of InstanceTemplatesScopedList
            resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "InstanceTemplatesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="InstanceTemplatesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceTemplateList(proto.Message):
    r"""A list of instance templates.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.InstanceTemplate]):
            A list of InstanceTemplate resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceTemplatesListResponse for instance template
            lists.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["InstanceTemplate"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InstanceTemplate",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceTemplatesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_templates (MutableSequence[google.cloud.compute_v1.types.InstanceTemplate]):
            [Output Only] A list of instance templates that are
            contained within the specified project and zone.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] An informational warning that replaces the
            list of instance templates when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    instance_templates: MutableSequence["InstanceTemplate"] = proto.RepeatedField(
        proto.MESSAGE,
        number=459889679,
        message="InstanceTemplate",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstanceWithNamedPorts(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            [Output Only] The URL of the instance.

            This field is a member of `oneof`_ ``_instance``.
        named_ports (MutableSequence[google.cloud.compute_v1.types.NamedPort]):
            [Output Only] The named ports that belong to this instance
            group.
        status (str):
            [Output Only] The status of the instance. Check the Status
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of the instance.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            DEPROVISIONING (428935662):
                The Nanny is halted and we are performing
                tear down tasks like network deprogramming,
                releasing quota, IP, tearing down disks etc.
            PROVISIONING (290896621):
                Resources are being allocated for the
                instance.
            REPAIRING (413483285):
                The instance is in repair.
            RUNNING (121282975):
                The instance is running.
            STAGING (431072283):
                All required resources have been allocated
                and the instance is being started.
            STOPPED (444276141):
                The instance has stopped successfully.
            STOPPING (350791796):
                The instance is currently stopping (either
                being deleted or killed).
            SUSPENDED (51223995):
                The instance has suspended.
            SUSPENDING (514206246):
                The instance is suspending.
            TERMINATED (250018339):
                The instance has stopped (either by explicit
                action or underlying failure).
        """
        UNDEFINED_STATUS = 0
        DEPROVISIONING = 428935662
        PROVISIONING = 290896621
        REPAIRING = 413483285
        RUNNING = 121282975
        STAGING = 431072283
        STOPPED = 444276141
        STOPPING = 350791796
        SUSPENDED = 51223995
        SUSPENDING = 514206246
        TERMINATED = 250018339

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
        optional=True,
    )
    named_ports: MutableSequence["NamedPort"] = proto.RepeatedField(
        proto.MESSAGE,
        number=427598732,
        message="NamedPort",
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )


class InstancesAddResourcePoliciesRequest(proto.Message):
    r"""

    Attributes:
        resource_policies (MutableSequence[str]):
            Resource policies to be added to this
            instance.
    """

    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )


class InstancesGetEffectiveFirewallsResponse(proto.Message):
    r"""

    Attributes:
        firewall_policys (MutableSequence[google.cloud.compute_v1.types.InstancesGetEffectiveFirewallsResponseEffectiveFirewallPolicy]):
            Effective firewalls from firewall policies.
        firewalls (MutableSequence[google.cloud.compute_v1.types.Firewall]):
            Effective firewalls on the instance.
    """

    firewall_policys: MutableSequence[
        "InstancesGetEffectiveFirewallsResponseEffectiveFirewallPolicy"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=410985794,
        message="InstancesGetEffectiveFirewallsResponseEffectiveFirewallPolicy",
    )
    firewalls: MutableSequence["Firewall"] = proto.RepeatedField(
        proto.MESSAGE,
        number=272245619,
        message="Firewall",
    )


class InstancesGetEffectiveFirewallsResponseEffectiveFirewallPolicy(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        display_name (str):
            [Output Only] Deprecated, please use short name instead. The
            display name of the firewall policy.

            This field is a member of `oneof`_ ``_display_name``.
        name (str):
            [Output Only] The name of the firewall policy.

            This field is a member of `oneof`_ ``_name``.
        rules (MutableSequence[google.cloud.compute_v1.types.FirewallPolicyRule]):
            The rules that apply to the network.
        short_name (str):
            [Output Only] The short name of the firewall policy.

            This field is a member of `oneof`_ ``_short_name``.
        type_ (str):
            [Output Only] The type of the firewall policy. Can be one of
            HIERARCHY, NETWORK, NETWORK_REGIONAL. Check the Type enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""[Output Only] The type of the firewall policy. Can be one of
        HIERARCHY, NETWORK, NETWORK_REGIONAL.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            HIERARCHY (69902869):
                No description available.
            NETWORK (413984270):
                No description available.
            NETWORK_REGIONAL (190804272):
                No description available.
            UNSPECIFIED (526786327):
                No description available.
        """
        UNDEFINED_TYPE = 0
        HIERARCHY = 69902869
        NETWORK = 413984270
        NETWORK_REGIONAL = 190804272
        UNSPECIFIED = 526786327

    display_name: str = proto.Field(
        proto.STRING,
        number=4473832,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    rules: MutableSequence["FirewallPolicyRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=108873975,
        message="FirewallPolicyRule",
    )
    short_name: str = proto.Field(
        proto.STRING,
        number=492051566,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class InstancesRemoveResourcePoliciesRequest(proto.Message):
    r"""

    Attributes:
        resource_policies (MutableSequence[str]):
            Resource policies to be removed from this
            instance.
    """

    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )


class InstancesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instances (MutableSequence[google.cloud.compute_v1.types.Instance]):
            [Output Only] A list of instances contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of instances when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    instances: MutableSequence["Instance"] = proto.RepeatedField(
        proto.MESSAGE,
        number=29097598,
        message="Instance",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InstancesSetLabelsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        label_fingerprint (str):
            Fingerprint of the previous set of labels for
            this resource, used to prevent conflicts.
            Provide the latest fingerprint value when making
            a request to add or change labels.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):

    """

    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )


class InstancesSetMachineResourcesRequest(proto.Message):
    r"""

    Attributes:
        guest_accelerators (MutableSequence[google.cloud.compute_v1.types.AcceleratorConfig]):
            A list of the type and count of accelerator
            cards attached to the instance.
    """

    guest_accelerators: MutableSequence["AcceleratorConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=463595119,
        message="AcceleratorConfig",
    )


class InstancesSetMachineTypeRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        machine_type (str):
            Full or partial URL of the machine type
            resource. See Machine Types for a full list of
            machine types. For example:
            zones/us-central1-f/machineTypes/n1-standard-1

            This field is a member of `oneof`_ ``_machine_type``.
    """

    machine_type: str = proto.Field(
        proto.STRING,
        number=227711026,
        optional=True,
    )


class InstancesSetMinCpuPlatformRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        min_cpu_platform (str):
            Minimum cpu/platform this instance should be
            started at.

            This field is a member of `oneof`_ ``_min_cpu_platform``.
    """

    min_cpu_platform: str = proto.Field(
        proto.STRING,
        number=242912759,
        optional=True,
    )


class InstancesSetNameRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        current_name (str):
            The current name of this resource, used to
            prevent conflicts. Provide the latest name when
            making a request to change name.

            This field is a member of `oneof`_ ``_current_name``.
        name (str):
            The name to be applied to the instance. Needs
            to be RFC 1035 compliant.

            This field is a member of `oneof`_ ``_name``.
    """

    current_name: str = proto.Field(
        proto.STRING,
        number=394983825,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )


class InstancesSetServiceAccountRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        email (str):
            Email address of the service account.

            This field is a member of `oneof`_ ``_email``.
        scopes (MutableSequence[str]):
            The list of scopes to be made available for
            this service account.
    """

    email: str = proto.Field(
        proto.STRING,
        number=96619420,
        optional=True,
    )
    scopes: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=165973151,
    )


class InstancesStartWithEncryptionKeyRequest(proto.Message):
    r"""

    Attributes:
        disks (MutableSequence[google.cloud.compute_v1.types.CustomerEncryptionKeyProtectedDisk]):
            Array of disks associated with this instance
            that are protected with a customer-supplied
            encryption key. In order to start the instance,
            the disk url and its corresponding key must be
            provided. If the disk is not protected with a
            customer-supplied encryption key it should not
            be specified.
    """

    disks: MutableSequence["CustomerEncryptionKeyProtectedDisk"] = proto.RepeatedField(
        proto.MESSAGE,
        number=95594102,
        message="CustomerEncryptionKeyProtectedDisk",
    )


class Int64RangeMatch(proto.Message):
    r"""HttpRouteRuleMatch criteria for field values that must stay
    within the specified integer range.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        range_end (int):
            The end of the range (exclusive) in signed
            long integer format.

            This field is a member of `oneof`_ ``_range_end``.
        range_start (int):
            The start of the range (inclusive) in signed
            long integer format.

            This field is a member of `oneof`_ ``_range_start``.
    """

    range_end: int = proto.Field(
        proto.INT64,
        number=322439897,
        optional=True,
    )
    range_start: int = proto.Field(
        proto.INT64,
        number=103333600,
        optional=True,
    )


class Interconnect(proto.Message):
    r"""Represents an Interconnect resource. An Interconnect resource
    is a dedicated connection between the GCP network and your
    on-premises network. For more information, read the Dedicated
    Interconnect Overview.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        admin_enabled (bool):
            Administrative status of the interconnect.
            When this is set to true, the Interconnect is
            functional and can carry traffic. When set to
            false, no packets can be carried over the
            interconnect and no BGP routes are exchanged
            over it. By default, the status is set to true.

            This field is a member of `oneof`_ ``_admin_enabled``.
        circuit_infos (MutableSequence[google.cloud.compute_v1.types.InterconnectCircuitInfo]):
            [Output Only] A list of CircuitInfo objects, that describe
            the individual circuits in this LAG.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        customer_name (str):
            Customer name, to put in the Letter of
            Authorization as the party authorized to request
            a crossconnect.

            This field is a member of `oneof`_ ``_customer_name``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        expected_outages (MutableSequence[google.cloud.compute_v1.types.InterconnectOutageNotification]):
            [Output Only] A list of outages expected for this
            Interconnect.
        google_ip_address (str):
            [Output Only] IP address configured on the Google side of
            the Interconnect link. This can be used only for ping tests.

            This field is a member of `oneof`_ ``_google_ip_address``.
        google_reference_id (str):
            [Output Only] Google reference ID to be used when raising
            support tickets with Google or otherwise to debug backend
            connectivity issues.

            This field is a member of `oneof`_ ``_google_reference_id``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        interconnect_attachments (MutableSequence[str]):
            [Output Only] A list of the URLs of all
            InterconnectAttachments configured to use this Interconnect.
        interconnect_type (str):
            Type of interconnect, which can take one of the following
            values: - PARTNER: A partner-managed interconnection shared
            between customers though a partner. - DEDICATED: A dedicated
            physical interconnection with the customer. Note that a
            value IT_PRIVATE has been deprecated in favor of DEDICATED.
            Check the InterconnectType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_interconnect_type``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#interconnect for interconnects.

            This field is a member of `oneof`_ ``_kind``.
        link_type (str):
            Type of link requested, which can take one of the following
            values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR
            optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR
            optics. Note that this field indicates the speed of each of
            the links in the bundle, not the speed of the entire bundle.
            Check the LinkType enum for the list of possible values.

            This field is a member of `oneof`_ ``_link_type``.
        location (str):
            URL of the InterconnectLocation object that
            represents where this connection is to be
            provisioned.

            This field is a member of `oneof`_ ``_location``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        noc_contact_email (str):
            Email address to contact the customer NOC for
            operations and maintenance notifications
            regarding this Interconnect. If specified, this
            will be used for notifications in addition to
            all other forms described, such as Cloud
            Monitoring logs alerting and Cloud
            Notifications. This field is required for users
            who sign up for Cloud Interconnect using
            workforce identity federation.

            This field is a member of `oneof`_ ``_noc_contact_email``.
        operational_status (str):
            [Output Only] The current status of this Interconnect's
            functionality, which can take one of the following values: -
            OS_ACTIVE: A valid Interconnect, which is turned up and is
            ready to use. Attachments may be provisioned on this
            Interconnect. - OS_UNPROVISIONED: An Interconnect that has
            not completed turnup. No attachments may be provisioned on
            this Interconnect. - OS_UNDER_MAINTENANCE: An Interconnect
            that is undergoing internal maintenance. No attachments may
            be provisioned or updated on this Interconnect. Check the
            OperationalStatus enum for the list of possible values.

            This field is a member of `oneof`_ ``_operational_status``.
        peer_ip_address (str):
            [Output Only] IP address configured on the customer side of
            the Interconnect link. The customer should configure this IP
            address during turnup when prompted by Google NOC. This can
            be used only for ping tests.

            This field is a member of `oneof`_ ``_peer_ip_address``.
        provisioned_link_count (int):
            [Output Only] Number of links actually provisioned in this
            interconnect.

            This field is a member of `oneof`_ ``_provisioned_link_count``.
        requested_link_count (int):
            Target number of physical links in the link
            bundle, as requested by the customer.

            This field is a member of `oneof`_ ``_requested_link_count``.
        satisfies_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_satisfies_pzs``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        state (str):
            [Output Only] The current state of Interconnect
            functionality, which can take one of the following values: -
            ACTIVE: The Interconnect is valid, turned up and ready to
            use. Attachments may be provisioned on this Interconnect. -
            UNPROVISIONED: The Interconnect has not completed turnup. No
            attachments may be provisioned on this Interconnect. -
            UNDER_MAINTENANCE: The Interconnect is undergoing internal
            maintenance. No attachments may be provisioned or updated on
            this Interconnect. Check the State enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_state``.
    """

    class InterconnectType(proto.Enum):
        r"""Type of interconnect, which can take one of the following values: -
        PARTNER: A partner-managed interconnection shared between customers
        though a partner. - DEDICATED: A dedicated physical interconnection
        with the customer. Note that a value IT_PRIVATE has been deprecated
        in favor of DEDICATED.

        Values:
            UNDEFINED_INTERCONNECT_TYPE (0):
                A value indicating that the enum field is not
                set.
            DEDICATED (258411983):
                A dedicated physical interconnection with the
                customer.
            IT_PRIVATE (335677007):
                [Deprecated] A private, physical interconnection with the
                customer.
            PARTNER (461924520):
                A partner-managed interconnection shared
                between customers via partner.
        """
        UNDEFINED_INTERCONNECT_TYPE = 0
        DEDICATED = 258411983
        IT_PRIVATE = 335677007
        PARTNER = 461924520

    class LinkType(proto.Enum):
        r"""Type of link requested, which can take one of the following values:
        - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics -
        LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note
        that this field indicates the speed of each of the links in the
        bundle, not the speed of the entire bundle.

        Values:
            UNDEFINED_LINK_TYPE (0):
                A value indicating that the enum field is not
                set.
            LINK_TYPE_ETHERNET_100G_LR (337672551):
                100G Ethernet, LR Optics.
            LINK_TYPE_ETHERNET_10G_LR (236739749):
                10G Ethernet, LR Optics. [(rate_bps) = 10000000000];
        """
        UNDEFINED_LINK_TYPE = 0
        LINK_TYPE_ETHERNET_100G_LR = 337672551
        LINK_TYPE_ETHERNET_10G_LR = 236739749

    class OperationalStatus(proto.Enum):
        r"""[Output Only] The current status of this Interconnect's
        functionality, which can take one of the following values: -
        OS_ACTIVE: A valid Interconnect, which is turned up and is ready to
        use. Attachments may be provisioned on this Interconnect. -
        OS_UNPROVISIONED: An Interconnect that has not completed turnup. No
        attachments may be provisioned on this Interconnect. -
        OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal
        maintenance. No attachments may be provisioned or updated on this
        Interconnect.

        Values:
            UNDEFINED_OPERATIONAL_STATUS (0):
                A value indicating that the enum field is not
                set.
            OS_ACTIVE (55721409):
                The interconnect is valid, turned up, and
                ready to use. Attachments may be provisioned on
                this interconnect.
            OS_UNPROVISIONED (239771840):
                The interconnect has not completed turnup. No
                attachments may be provisioned on this
                interconnect.
        """
        UNDEFINED_OPERATIONAL_STATUS = 0
        OS_ACTIVE = 55721409
        OS_UNPROVISIONED = 239771840

    class State(proto.Enum):
        r"""[Output Only] The current state of Interconnect functionality, which
        can take one of the following values: - ACTIVE: The Interconnect is
        valid, turned up and ready to use. Attachments may be provisioned on
        this Interconnect. - UNPROVISIONED: The Interconnect has not
        completed turnup. No attachments may be provisioned on this
        Interconnect. - UNDER_MAINTENANCE: The Interconnect is undergoing
        internal maintenance. No attachments may be provisioned or updated
        on this Interconnect.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                The interconnect is valid, turned up, and
                ready to use. Attachments may be provisioned on
                this interconnect.
            UNPROVISIONED (517333979):
                The interconnect has not completed turnup. No
                attachments may be provisioned on this
                interconnect.
        """
        UNDEFINED_STATE = 0
        ACTIVE = 314733318
        UNPROVISIONED = 517333979

    admin_enabled: bool = proto.Field(
        proto.BOOL,
        number=445675089,
        optional=True,
    )
    circuit_infos: MutableSequence["InterconnectCircuitInfo"] = proto.RepeatedField(
        proto.MESSAGE,
        number=164839855,
        message="InterconnectCircuitInfo",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    customer_name: str = proto.Field(
        proto.STRING,
        number=3665484,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    expected_outages: MutableSequence[
        "InterconnectOutageNotification"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=264484123,
        message="InterconnectOutageNotification",
    )
    google_ip_address: str = proto.Field(
        proto.STRING,
        number=443105954,
        optional=True,
    )
    google_reference_id: str = proto.Field(
        proto.STRING,
        number=534944469,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    interconnect_attachments: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=425388415,
    )
    interconnect_type: str = proto.Field(
        proto.STRING,
        number=515165259,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    link_type: str = proto.Field(
        proto.STRING,
        number=523207775,
        optional=True,
    )
    location: str = proto.Field(
        proto.STRING,
        number=290430901,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    noc_contact_email: str = proto.Field(
        proto.STRING,
        number=14072832,
        optional=True,
    )
    operational_status: str = proto.Field(
        proto.STRING,
        number=201070847,
        optional=True,
    )
    peer_ip_address: str = proto.Field(
        proto.STRING,
        number=207735769,
        optional=True,
    )
    provisioned_link_count: int = proto.Field(
        proto.INT32,
        number=410888565,
        optional=True,
    )
    requested_link_count: int = proto.Field(
        proto.INT32,
        number=45051387,
        optional=True,
    )
    satisfies_pzs: bool = proto.Field(
        proto.BOOL,
        number=480964267,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )


class InterconnectAttachment(proto.Message):
    r"""Represents an Interconnect Attachment (VLAN) resource. You
    can use Interconnect attachments (VLANS) to connect your Virtual
    Private Cloud networks to your on-premises networks through an
    Interconnect. For more information, read Creating VLAN
    Attachments.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        admin_enabled (bool):
            Determines whether this Attachment will carry packets. Not
            present for PARTNER_PROVIDER.

            This field is a member of `oneof`_ ``_admin_enabled``.
        bandwidth (str):
            Provisioned bandwidth capacity for the interconnect
            attachment. For attachments of type DEDICATED, the user can
            set the bandwidth. For attachments of type PARTNER, the
            Google Partner that is operating the interconnect must set
            the bandwidth. Output only for PARTNER type, mutable for
            PARTNER_PROVIDER and DEDICATED, and can take one of the
            following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100
            Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s -
            BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1
            Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10
            Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s Check the
            Bandwidth enum for the list of possible values.

            This field is a member of `oneof`_ ``_bandwidth``.
        candidate_ipv6_subnets (MutableSequence[str]):
            This field is not available.
        candidate_subnets (MutableSequence[str]):
            Up to 16 candidate prefixes that can be used
            to restrict the allocation of
            cloudRouterIpAddress and customerRouterIpAddress
            for this attachment. All prefixes must be within
            link-local address space (169.254.0.0/16) and
            must be /29 or shorter (/28, /27, etc). Google
            will attempt to select an unused /29 from the
            supplied candidate prefix(es). The request will
            fail if all possible /29s are in use on Google's
            edge. If not supplied, Google will randomly
            select an unused /29 from all of link-local
            space.
        cloud_router_ip_address (str):
            [Output Only] IPv4 address + prefix length to be configured
            on Cloud Router Interface for this interconnect attachment.

            This field is a member of `oneof`_ ``_cloud_router_ip_address``.
        cloud_router_ipv6_address (str):
            [Output Only] IPv6 address + prefix length to be configured
            on Cloud Router Interface for this interconnect attachment.

            This field is a member of `oneof`_ ``_cloud_router_ipv6_address``.
        cloud_router_ipv6_interface_id (str):
            This field is not available.

            This field is a member of `oneof`_ ``_cloud_router_ipv6_interface_id``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        customer_router_ip_address (str):
            [Output Only] IPv4 address + prefix length to be configured
            on the customer router subinterface for this interconnect
            attachment.

            This field is a member of `oneof`_ ``_customer_router_ip_address``.
        customer_router_ipv6_address (str):
            [Output Only] IPv6 address + prefix length to be configured
            on the customer router subinterface for this interconnect
            attachment.

            This field is a member of `oneof`_ ``_customer_router_ipv6_address``.
        customer_router_ipv6_interface_id (str):
            This field is not available.

            This field is a member of `oneof`_ ``_customer_router_ipv6_interface_id``.
        dataplane_version (int):
            [Output Only] Dataplane version for this
            InterconnectAttachment. This field is only present for
            Dataplane version 2 and higher. Absence of this field in the
            API output indicates that the Dataplane is version 1.

            This field is a member of `oneof`_ ``_dataplane_version``.
        description (str):
            An optional description of this resource.

            This field is a member of `oneof`_ ``_description``.
        edge_availability_domain (str):
            Desired availability domain for the attachment. Only
            available for type PARTNER, at creation time, and can take
            one of the following values: - AVAILABILITY_DOMAIN_ANY -
            AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved
            reliability, customers should configure a pair of
            attachments, one per availability domain. The selected
            availability domain will be provided to the Partner via the
            pairing key, so that the provisioned circuit will lie in the
            specified domain. If not specified, the value will default
            to AVAILABILITY_DOMAIN_ANY. Check the EdgeAvailabilityDomain
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_edge_availability_domain``.
        encryption (str):
            Indicates the user-supplied encryption option of this VLAN
            attachment (interconnectAttachment). Can only be specified
            at attachment creation for PARTNER or DEDICATED attachments.
            Possible values are: - NONE - This is the default value,
            which means that the VLAN attachment carries unencrypted
            traffic. VMs are able to send traffic to, or receive traffic
            from, such a VLAN attachment. - IPSEC - The VLAN attachment
            carries only encrypted traffic that is encrypted by an IPsec
            device, such as an HA VPN gateway or third-party IPsec VPN.
            VMs cannot directly send traffic to, or receive traffic
            from, such a VLAN attachment. To use *HA VPN over Cloud
            Interconnect*, the VLAN attachment must be created with this
            option. Check the Encryption enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_encryption``.
        google_reference_id (str):
            [Output Only] Google reference ID, to be used when raising
            support tickets with Google or otherwise to debug backend
            connectivity issues. [Deprecated] This field is not used.

            This field is a member of `oneof`_ ``_google_reference_id``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        interconnect (str):
            URL of the underlying Interconnect object
            that this attachment's traffic will traverse
            through.

            This field is a member of `oneof`_ ``_interconnect``.
        ipsec_internal_addresses (MutableSequence[str]):
            A list of URLs of addresses that have been
            reserved for the VLAN attachment. Used only for
            the VLAN attachment that has the encryption
            option as IPSEC. The addresses must be regional
            internal IP address ranges. When creating an HA
            VPN gateway over the VLAN attachment, if the
            attachment is configured to use a regional
            internal IP address, then the VPN gateway's IP
            address is allocated from the IP address range
            specified here. For example, if the HA VPN
            gateway's interface 0 is paired to this VLAN
            attachment, then a regional internal IP address
            for the VPN gateway interface 0 will be
            allocated from the IP address specified for this
            VLAN attachment. If this field is not specified
            when creating the VLAN attachment, then later on
            when creating an HA VPN gateway on this VLAN
            attachment, the HA VPN gateway's IP address is
            allocated from the regional external IP address
            pool. Not currently available publicly.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#interconnectAttachment for interconnect attachments.

            This field is a member of `oneof`_ ``_kind``.
        mtu (int):
            Maximum Transmission Unit (MTU), in bytes, of
            packets passing through this interconnect
            attachment. Only 1440 and 1500 are allowed. If
            not specified, the value will default to 1440.

            This field is a member of `oneof`_ ``_mtu``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        operational_status (str):
            [Output Only] The current status of whether or not this
            interconnect attachment is functional, which can take one of
            the following values: - OS_ACTIVE: The attachment has been
            turned up and is ready to use. - OS_UNPROVISIONED: The
            attachment is not ready to use yet, because turnup is not
            complete. Check the OperationalStatus enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_operational_status``.
        pairing_key (str):
            [Output only for type PARTNER. Input only for
            PARTNER_PROVIDER. Not present for DEDICATED]. The opaque
            identifier of an PARTNER attachment used to initiate
            provisioning with a selected partner. Of the form
            "XXXXX/region/domain".

            This field is a member of `oneof`_ ``_pairing_key``.
        partner_asn (int):
            Optional BGP ASN for the router supplied by a Layer 3
            Partner if they configured BGP on behalf of the customer.
            Output only for PARTNER type, input only for
            PARTNER_PROVIDER, not available for DEDICATED.

            This field is a member of `oneof`_ ``_partner_asn``.
        partner_metadata (google.cloud.compute_v1.types.InterconnectAttachmentPartnerMetadata):
            Informational metadata about Partner attachments from
            Partners to display to customers. Output only for for
            PARTNER type, mutable for PARTNER_PROVIDER, not available
            for DEDICATED.

            This field is a member of `oneof`_ ``_partner_metadata``.
        private_interconnect_info (google.cloud.compute_v1.types.InterconnectAttachmentPrivateInfo):
            [Output Only] Information specific to an
            InterconnectAttachment. This property is populated if the
            interconnect that this is attached to is of type DEDICATED.

            This field is a member of `oneof`_ ``_private_interconnect_info``.
        region (str):
            [Output Only] URL of the region where the regional
            interconnect attachment resides. You must specify this field
            as part of the HTTP request URL. It is not settable as a
            field in the request body.

            This field is a member of `oneof`_ ``_region``.
        router (str):
            URL of the Cloud Router to be used for
            dynamic routing. This router must be in the same
            region as this InterconnectAttachment. The
            InterconnectAttachment will automatically
            connect the Interconnect to the network & region
            within which the Cloud Router is configured.

            This field is a member of `oneof`_ ``_router``.
        satisfies_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_satisfies_pzs``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        stack_type (str):
            The stack type for this interconnect attachment to identify
            whether the IPv6 feature is enabled or not. If not
            specified, IPV4_ONLY will be used. This field can be both
            set at interconnect attachments creation and update
            interconnect attachment operations. Check the StackType enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_stack_type``.
        state (str):
            [Output Only] The current state of this attachment's
            functionality. Enum values ACTIVE and UNPROVISIONED are
            shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER
            interconnect attachments, while enum values PENDING_PARTNER,
            PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for
            only PARTNER and PARTNER_PROVIDER interconnect attachments.
            This state can take one of the following values: - ACTIVE:
            The attachment has been turned up and is ready to use. -
            UNPROVISIONED: The attachment is not ready to use yet,
            because turnup is not complete. - PENDING_PARTNER: A
            newly-created PARTNER attachment that has not yet been
            configured on the Partner side. - PARTNER_REQUEST_RECEIVED:
            A PARTNER attachment is in the process of provisioning after
            a PARTNER_PROVIDER attachment was created that references
            it. - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER
            attachment that is waiting for a customer to activate it. -
            DEFUNCT: The attachment was deleted externally and is no
            longer functional. This could be because the associated
            Interconnect was removed, or because the other side of a
            Partner attachment was deleted. Check the State enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_state``.
        type_ (str):
            The type of interconnect attachment this is, which can take
            one of the following values: - DEDICATED: an attachment to a
            Dedicated Interconnect. - PARTNER: an attachment to a
            Partner Interconnect, created by the customer. -
            PARTNER_PROVIDER: an attachment to a Partner Interconnect,
            created by the partner. Check the Type enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_type``.
        vlan_tag8021q (int):
            The IEEE 802.1Q VLAN tag for this attachment,
            in the range 2-4093. Only specified at creation
            time.

            This field is a member of `oneof`_ ``_vlan_tag8021q``.
    """

    class Bandwidth(proto.Enum):
        r"""Provisioned bandwidth capacity for the interconnect attachment. For
        attachments of type DEDICATED, the user can set the bandwidth. For
        attachments of type PARTNER, the Google Partner that is operating
        the interconnect must set the bandwidth. Output only for PARTNER
        type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one
        of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s
        - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s
        - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s -
        BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s -
        BPS_50G: 50 Gbit/s

        Values:
            UNDEFINED_BANDWIDTH (0):
                A value indicating that the enum field is not
                set.
            BPS_100M (49547958):
                100 Mbit/s
            BPS_10G (278693006):
                10 Gbit/s
            BPS_1G (355358448):
                1 Gbit/s
            BPS_200M (49577749):
                200 Mbit/s
            BPS_20G (278693967):
                20 Gbit/s
            BPS_2G (355358479):
                2 Gbit/s
            BPS_300M (49607540):
                300 Mbit/s
            BPS_400M (49637331):
                400 Mbit/s
            BPS_500M (49667122):
                500 Mbit/s
            BPS_50G (278696850):
                50 Gbit/s
            BPS_50M (278696856):
                50 Mbit/s
            BPS_5G (355358572):
                5 Gbit/s
        """
        UNDEFINED_BANDWIDTH = 0
        BPS_100M = 49547958
        BPS_10G = 278693006
        BPS_1G = 355358448
        BPS_200M = 49577749
        BPS_20G = 278693967
        BPS_2G = 355358479
        BPS_300M = 49607540
        BPS_400M = 49637331
        BPS_500M = 49667122
        BPS_50G = 278696850
        BPS_50M = 278696856
        BPS_5G = 355358572

    class EdgeAvailabilityDomain(proto.Enum):
        r"""Desired availability domain for the attachment. Only available for
        type PARTNER, at creation time, and can take one of the following
        values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 -
        AVAILABILITY_DOMAIN_2 For improved reliability, customers should
        configure a pair of attachments, one per availability domain. The
        selected availability domain will be provided to the Partner via the
        pairing key, so that the provisioned circuit will lie in the
        specified domain. If not specified, the value will default to
        AVAILABILITY_DOMAIN_ANY.

        Values:
            UNDEFINED_EDGE_AVAILABILITY_DOMAIN (0):
                A value indicating that the enum field is not
                set.
            AVAILABILITY_DOMAIN_1 (349552090):
                No description available.
            AVAILABILITY_DOMAIN_2 (349552091):
                No description available.
            AVAILABILITY_DOMAIN_ANY (375256373):
                No description available.
        """
        UNDEFINED_EDGE_AVAILABILITY_DOMAIN = 0
        AVAILABILITY_DOMAIN_1 = 349552090
        AVAILABILITY_DOMAIN_2 = 349552091
        AVAILABILITY_DOMAIN_ANY = 375256373

    class Encryption(proto.Enum):
        r"""Indicates the user-supplied encryption option of this VLAN
        attachment (interconnectAttachment). Can only be specified at
        attachment creation for PARTNER or DEDICATED attachments. Possible
        values are: - NONE - This is the default value, which means that the
        VLAN attachment carries unencrypted traffic. VMs are able to send
        traffic to, or receive traffic from, such a VLAN attachment. - IPSEC
        - The VLAN attachment carries only encrypted traffic that is
        encrypted by an IPsec device, such as an HA VPN gateway or
        third-party IPsec VPN. VMs cannot directly send traffic to, or
        receive traffic from, such a VLAN attachment. To use *HA VPN over
        Cloud Interconnect*, the VLAN attachment must be created with this
        option.

        Values:
            UNDEFINED_ENCRYPTION (0):
                A value indicating that the enum field is not
                set.
            IPSEC (69882282):
                The interconnect attachment will carry only
                encrypted traffic that is encrypted by an IPsec
                device such as HA VPN gateway; VMs cannot
                directly send traffic to or receive traffic from
                such an interconnect attachment. To use HA VPN
                over Cloud Interconnect, the interconnect
                attachment must be created with this option.
            NONE (2402104):
                This is the default value, which means the
                Interconnect Attachment will carry unencrypted
                traffic. VMs will be able to send traffic to or
                receive traffic from such interconnect
                attachment.
        """
        UNDEFINED_ENCRYPTION = 0
        IPSEC = 69882282
        NONE = 2402104

    class OperationalStatus(proto.Enum):
        r"""[Output Only] The current status of whether or not this interconnect
        attachment is functional, which can take one of the following
        values: - OS_ACTIVE: The attachment has been turned up and is ready
        to use. - OS_UNPROVISIONED: The attachment is not ready to use yet,
        because turnup is not complete.

        Values:
            UNDEFINED_OPERATIONAL_STATUS (0):
                A value indicating that the enum field is not
                set.
            OS_ACTIVE (55721409):
                Indicates that attachment has been turned up
                and is ready to use.
            OS_UNPROVISIONED (239771840):
                Indicates that attachment is not ready to use
                yet, because turnup is not complete.
        """
        UNDEFINED_OPERATIONAL_STATUS = 0
        OS_ACTIVE = 55721409
        OS_UNPROVISIONED = 239771840

    class StackType(proto.Enum):
        r"""The stack type for this interconnect attachment to identify whether
        the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will
        be used. This field can be both set at interconnect attachments
        creation and update interconnect attachment operations.

        Values:
            UNDEFINED_STACK_TYPE (0):
                A value indicating that the enum field is not
                set.
            IPV4_IPV6 (22197249):
                The interconnect attachment can have both
                IPv4 and IPv6 addresses.
            IPV4_ONLY (22373798):
                The interconnect attachment will only be
                assigned IPv4 addresses.
        """
        UNDEFINED_STACK_TYPE = 0
        IPV4_IPV6 = 22197249
        IPV4_ONLY = 22373798

    class State(proto.Enum):
        r"""[Output Only] The current state of this attachment's functionality.
        Enum values ACTIVE and UNPROVISIONED are shared by
        DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect
        attachments, while enum values PENDING_PARTNER,
        PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only
        PARTNER and PARTNER_PROVIDER interconnect attachments. This state
        can take one of the following values: - ACTIVE: The attachment has
        been turned up and is ready to use. - UNPROVISIONED: The attachment
        is not ready to use yet, because turnup is not complete. -
        PENDING_PARTNER: A newly-created PARTNER attachment that has not yet
        been configured on the Partner side. - PARTNER_REQUEST_RECEIVED: A
        PARTNER attachment is in the process of provisioning after a
        PARTNER_PROVIDER attachment was created that references it. -
        PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is
        waiting for a customer to activate it. - DEFUNCT: The attachment was
        deleted externally and is no longer functional. This could be
        because the associated Interconnect was removed, or because the
        other side of a Partner attachment was deleted.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                Indicates that attachment has been turned up
                and is ready to use.
            DEFUNCT (115891759):
                The attachment was deleted externally and is
                no longer functional. This could be because the
                associated Interconnect was wiped out, or
                because the other side of a Partner attachment
                was deleted.
            PARTNER_REQUEST_RECEIVED (513587304):
                A PARTNER attachment is in the process of provisioning after
                a PARTNER_PROVIDER attachment was created that references
                it.
            PENDING_CUSTOMER (167494054):
                PARTNER or PARTNER_PROVIDER attachment that is waiting for
                the customer to activate.
            PENDING_PARTNER (387890656):
                A newly created PARTNER attachment that has
                not yet been configured on the Partner side.
            STATE_UNSPECIFIED (470755401):
                No description available.
            UNPROVISIONED (517333979):
                Indicates that attachment is not ready to use
                yet, because turnup is not complete.
        """
        UNDEFINED_STATE = 0
        ACTIVE = 314733318
        DEFUNCT = 115891759
        PARTNER_REQUEST_RECEIVED = 513587304
        PENDING_CUSTOMER = 167494054
        PENDING_PARTNER = 387890656
        STATE_UNSPECIFIED = 470755401
        UNPROVISIONED = 517333979

    class Type(proto.Enum):
        r"""The type of interconnect attachment this is, which can take one of
        the following values: - DEDICATED: an attachment to a Dedicated
        Interconnect. - PARTNER: an attachment to a Partner Interconnect,
        created by the customer. - PARTNER_PROVIDER: an attachment to a
        Partner Interconnect, created by the partner.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            DEDICATED (258411983):
                Attachment to a dedicated interconnect.
            PARTNER (461924520):
                Attachment to a partner interconnect, created
                by the customer.
            PARTNER_PROVIDER (483261352):
                Attachment to a partner interconnect, created
                by the partner.
        """
        UNDEFINED_TYPE = 0
        DEDICATED = 258411983
        PARTNER = 461924520
        PARTNER_PROVIDER = 483261352

    admin_enabled: bool = proto.Field(
        proto.BOOL,
        number=445675089,
        optional=True,
    )
    bandwidth: str = proto.Field(
        proto.STRING,
        number=181715121,
        optional=True,
    )
    candidate_ipv6_subnets: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=70682522,
    )
    candidate_subnets: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=237842938,
    )
    cloud_router_ip_address: str = proto.Field(
        proto.STRING,
        number=287392776,
        optional=True,
    )
    cloud_router_ipv6_address: str = proto.Field(
        proto.STRING,
        number=451922376,
        optional=True,
    )
    cloud_router_ipv6_interface_id: str = proto.Field(
        proto.STRING,
        number=521282701,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    customer_router_ip_address: str = proto.Field(
        proto.STRING,
        number=332475761,
        optional=True,
    )
    customer_router_ipv6_address: str = proto.Field(
        proto.STRING,
        number=290127089,
        optional=True,
    )
    customer_router_ipv6_interface_id: str = proto.Field(
        proto.STRING,
        number=380994308,
        optional=True,
    )
    dataplane_version: int = proto.Field(
        proto.INT32,
        number=34920075,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    edge_availability_domain: str = proto.Field(
        proto.STRING,
        number=71289510,
        optional=True,
    )
    encryption: str = proto.Field(
        proto.STRING,
        number=97980291,
        optional=True,
    )
    google_reference_id: str = proto.Field(
        proto.STRING,
        number=534944469,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    interconnect: str = proto.Field(
        proto.STRING,
        number=224601230,
        optional=True,
    )
    ipsec_internal_addresses: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=407648565,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    mtu: int = proto.Field(
        proto.INT32,
        number=108462,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    operational_status: str = proto.Field(
        proto.STRING,
        number=201070847,
        optional=True,
    )
    pairing_key: str = proto.Field(
        proto.STRING,
        number=439695464,
        optional=True,
    )
    partner_asn: int = proto.Field(
        proto.INT64,
        number=438166149,
        optional=True,
    )
    partner_metadata: "InterconnectAttachmentPartnerMetadata" = proto.Field(
        proto.MESSAGE,
        number=65908934,
        optional=True,
        message="InterconnectAttachmentPartnerMetadata",
    )
    private_interconnect_info: "InterconnectAttachmentPrivateInfo" = proto.Field(
        proto.MESSAGE,
        number=237270531,
        optional=True,
        message="InterconnectAttachmentPrivateInfo",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    router: str = proto.Field(
        proto.STRING,
        number=148608841,
        optional=True,
    )
    satisfies_pzs: bool = proto.Field(
        proto.BOOL,
        number=480964267,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    stack_type: str = proto.Field(
        proto.STRING,
        number=425908881,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )
    vlan_tag8021q: int = proto.Field(
        proto.INT32,
        number=119927836,
        optional=True,
    )


class InterconnectAttachmentAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.InterconnectAttachmentsScopedList]):
            A list of InterconnectAttachmentsScopedList
            resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#interconnectAttachmentAggregatedList for aggregated
            lists of interconnect attachments.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "InterconnectAttachmentsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="InterconnectAttachmentsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InterconnectAttachmentList(proto.Message):
    r"""Response to the list request, and contains a list of
    interconnect attachments.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.InterconnectAttachment]):
            A list of InterconnectAttachment resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#interconnectAttachmentList for lists of interconnect
            attachments.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["InterconnectAttachment"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InterconnectAttachment",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InterconnectAttachmentPartnerMetadata(proto.Message):
    r"""Informational metadata about Partner attachments from Partners to
    display to customers. These fields are propagated from
    PARTNER_PROVIDER attachments to their corresponding PARTNER
    attachments.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        interconnect_name (str):
            Plain text name of the Interconnect this
            attachment is connected to, as displayed in the
            Partner's portal. For instance "Chicago 1". This
            value may be validated to match approved Partner
            values.

            This field is a member of `oneof`_ ``_interconnect_name``.
        partner_name (str):
            Plain text name of the Partner providing this
            attachment. This value may be validated to match
            approved Partner values.

            This field is a member of `oneof`_ ``_partner_name``.
        portal_url (str):
            URL of the Partner's portal for this
            Attachment. Partners may customise this to be a
            deep link to the specific resource on the
            Partner portal. This value may be validated to
            match approved Partner values.

            This field is a member of `oneof`_ ``_portal_url``.
    """

    interconnect_name: str = proto.Field(
        proto.STRING,
        number=514963356,
        optional=True,
    )
    partner_name: str = proto.Field(
        proto.STRING,
        number=161747874,
        optional=True,
    )
    portal_url: str = proto.Field(
        proto.STRING,
        number=269182748,
        optional=True,
    )


class InterconnectAttachmentPrivateInfo(proto.Message):
    r"""Information for an interconnect attachment when this belongs
    to an interconnect of type DEDICATED.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        tag8021q (int):
            [Output Only] 802.1q encapsulation tag to be used for
            traffic between Google and the customer, going to and from
            this network and region.

            This field is a member of `oneof`_ ``_tag8021q``.
    """

    tag8021q: int = proto.Field(
        proto.UINT32,
        number=271820992,
        optional=True,
    )


class InterconnectAttachmentsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        interconnect_attachments (MutableSequence[google.cloud.compute_v1.types.InterconnectAttachment]):
            A list of interconnect attachments contained
            in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of addresses when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    interconnect_attachments: MutableSequence[
        "InterconnectAttachment"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=425388415,
        message="InterconnectAttachment",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InterconnectCircuitInfo(proto.Message):
    r"""Describes a single physical circuit between the Customer and
    Google. CircuitInfo objects are created by Google, so all fields
    are output only.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        customer_demarc_id (str):
            Customer-side demarc ID for this circuit.

            This field is a member of `oneof`_ ``_customer_demarc_id``.
        google_circuit_id (str):
            Google-assigned unique ID for this circuit.
            Assigned at circuit turn-up.

            This field is a member of `oneof`_ ``_google_circuit_id``.
        google_demarc_id (str):
            Google-side demarc ID for this circuit.
            Assigned at circuit turn-up and provided by
            Google to the customer in the LOA.

            This field is a member of `oneof`_ ``_google_demarc_id``.
    """

    customer_demarc_id: str = proto.Field(
        proto.STRING,
        number=28771859,
        optional=True,
    )
    google_circuit_id: str = proto.Field(
        proto.STRING,
        number=262014711,
        optional=True,
    )
    google_demarc_id: str = proto.Field(
        proto.STRING,
        number=448196270,
        optional=True,
    )


class InterconnectDiagnostics(proto.Message):
    r"""Diagnostics information about interconnect, contains detailed
    and current technical information about Google's side of the
    connection.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        arp_caches (MutableSequence[google.cloud.compute_v1.types.InterconnectDiagnosticsARPEntry]):
            A list of InterconnectDiagnostics.ARPEntry
            objects, describing individual neighbors
            currently seen by the Google router in the ARP
            cache for the Interconnect. This will be empty
            when the Interconnect is not bundled.
        bundle_aggregation_type (str):
            The aggregation type of the bundle interface.
            Check the BundleAggregationType enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_bundle_aggregation_type``.
        bundle_operational_status (str):
            The operational status of the bundle
            interface. Check the BundleOperationalStatus
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_bundle_operational_status``.
        links (MutableSequence[google.cloud.compute_v1.types.InterconnectDiagnosticsLinkStatus]):
            A list of InterconnectDiagnostics.LinkStatus
            objects, describing the status for each link on
            the Interconnect.
        mac_address (str):
            The MAC address of the Interconnect's bundle
            interface.

            This field is a member of `oneof`_ ``_mac_address``.
    """

    class BundleAggregationType(proto.Enum):
        r"""The aggregation type of the bundle interface.

        Values:
            UNDEFINED_BUNDLE_AGGREGATION_TYPE (0):
                A value indicating that the enum field is not
                set.
            BUNDLE_AGGREGATION_TYPE_LACP (27758925):
                LACP is enabled.
            BUNDLE_AGGREGATION_TYPE_STATIC (50678873):
                LACP is disabled.
        """
        UNDEFINED_BUNDLE_AGGREGATION_TYPE = 0
        BUNDLE_AGGREGATION_TYPE_LACP = 27758925
        BUNDLE_AGGREGATION_TYPE_STATIC = 50678873

    class BundleOperationalStatus(proto.Enum):
        r"""The operational status of the bundle interface.

        Values:
            UNDEFINED_BUNDLE_OPERATIONAL_STATUS (0):
                A value indicating that the enum field is not
                set.
            BUNDLE_OPERATIONAL_STATUS_DOWN (453842693):
                If bundleAggregationType is LACP: LACP is not
                established and/or all links in the bundle have
                DOWN operational status. If
                bundleAggregationType is STATIC: one or more
                links in the bundle has DOWN operational status.
            BUNDLE_OPERATIONAL_STATUS_UP (161366462):
                If bundleAggregationType is LACP: LACP is
                established and at least one link in the bundle
                has UP operational status. If
                bundleAggregationType is STATIC: all links in
                the bundle (typically just one) have UP
                operational status.
        """
        UNDEFINED_BUNDLE_OPERATIONAL_STATUS = 0
        BUNDLE_OPERATIONAL_STATUS_DOWN = 453842693
        BUNDLE_OPERATIONAL_STATUS_UP = 161366462

    arp_caches: MutableSequence[
        "InterconnectDiagnosticsARPEntry"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=414591761,
        message="InterconnectDiagnosticsARPEntry",
    )
    bundle_aggregation_type: str = proto.Field(
        proto.STRING,
        number=434939028,
        optional=True,
    )
    bundle_operational_status: str = proto.Field(
        proto.STRING,
        number=106433500,
        optional=True,
    )
    links: MutableSequence["InterconnectDiagnosticsLinkStatus"] = proto.RepeatedField(
        proto.MESSAGE,
        number=102977465,
        message="InterconnectDiagnosticsLinkStatus",
    )
    mac_address: str = proto.Field(
        proto.STRING,
        number=332540164,
        optional=True,
    )


class InterconnectDiagnosticsARPEntry(proto.Message):
    r"""Describing the ARP neighbor entries seen on this link

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ip_address (str):
            The IP address of this ARP neighbor.

            This field is a member of `oneof`_ ``_ip_address``.
        mac_address (str):
            The MAC address of this ARP neighbor.

            This field is a member of `oneof`_ ``_mac_address``.
    """

    ip_address: str = proto.Field(
        proto.STRING,
        number=406272220,
        optional=True,
    )
    mac_address: str = proto.Field(
        proto.STRING,
        number=332540164,
        optional=True,
    )


class InterconnectDiagnosticsLinkLACPStatus(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        google_system_id (str):
            System ID of the port on Google's side of the
            LACP exchange.

            This field is a member of `oneof`_ ``_google_system_id``.
        neighbor_system_id (str):
            System ID of the port on the neighbor's side
            of the LACP exchange.

            This field is a member of `oneof`_ ``_neighbor_system_id``.
        state (str):
            The state of a LACP link, which can take one
            of the following values: - ACTIVE: The link is
            configured and active within the bundle. -
            DETACHED: The link is not configured within the
            bundle. This means that the rest of the object
            should be empty. Check the State enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_state``.
    """

    class State(proto.Enum):
        r"""The state of a LACP link, which can take one of the following
        values: - ACTIVE: The link is configured and active within the
        bundle. - DETACHED: The link is not configured within the
        bundle. This means that the rest of the object should be empty.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                The link is configured and active within the
                bundle.
            DETACHED (216562546):
                The link is not configured within the bundle,
                this means the rest of the object should be
                empty.
        """
        UNDEFINED_STATE = 0
        ACTIVE = 314733318
        DETACHED = 216562546

    google_system_id: str = proto.Field(
        proto.STRING,
        number=91210405,
        optional=True,
    )
    neighbor_system_id: str = proto.Field(
        proto.STRING,
        number=343821342,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )


class InterconnectDiagnosticsLinkOpticalPower(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        state (str):
            The status of the current value when compared to the warning
            and alarm levels for the receiving or transmitting
            transceiver. Possible states include: - OK: The value has
            not crossed a warning threshold. - LOW_WARNING: The value
            has crossed below the low warning threshold. - HIGH_WARNING:
            The value has crossed above the high warning threshold. -
            LOW_ALARM: The value has crossed below the low alarm
            threshold. - HIGH_ALARM: The value has crossed above the
            high alarm threshold. Check the State enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_state``.
        value (float):
            Value of the current receiving or
            transmitting optical power, read in dBm. Take a
            known good optical value, give it a 10% margin
            and trigger warnings relative to that value. In
            general, a -7dBm warning and a -11dBm alarm are
            good optical value estimates for most links.

            This field is a member of `oneof`_ ``_value``.
    """

    class State(proto.Enum):
        r"""The status of the current value when compared to the warning and
        alarm levels for the receiving or transmitting transceiver. Possible
        states include: - OK: The value has not crossed a warning threshold.
        - LOW_WARNING: The value has crossed below the low warning
        threshold. - HIGH_WARNING: The value has crossed above the high
        warning threshold. - LOW_ALARM: The value has crossed below the low
        alarm threshold. - HIGH_ALARM: The value has crossed above the high
        alarm threshold.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            HIGH_ALARM (305363284):
                The value has crossed above the high alarm
                threshold.
            HIGH_WARNING (220984799):
                The value of the current optical power has
                crossed above the high warning threshold.
            LOW_ALARM (316659046):
                The value of the current optical power has
                crossed below the low alarm threshold.
            LOW_WARNING (338793841):
                The value of the current optical power has
                crossed below the low warning threshold.
            OK (2524):
                The value of the current optical power has
                not crossed a warning threshold.
        """
        UNDEFINED_STATE = 0
        HIGH_ALARM = 305363284
        HIGH_WARNING = 220984799
        LOW_ALARM = 316659046
        LOW_WARNING = 338793841
        OK = 2524

    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )
    value: float = proto.Field(
        proto.FLOAT,
        number=111972721,
        optional=True,
    )


class InterconnectDiagnosticsLinkStatus(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        arp_caches (MutableSequence[google.cloud.compute_v1.types.InterconnectDiagnosticsARPEntry]):
            A list of InterconnectDiagnostics.ARPEntry
            objects, describing the ARP neighbor entries
            seen on this link. This will be empty if the
            link is bundled
        circuit_id (str):
            The unique ID for this link assigned during
            turn up by Google.

            This field is a member of `oneof`_ ``_circuit_id``.
        google_demarc (str):
            The Demarc address assigned by Google and
            provided in the LoA.

            This field is a member of `oneof`_ ``_google_demarc``.
        lacp_status (google.cloud.compute_v1.types.InterconnectDiagnosticsLinkLACPStatus):

            This field is a member of `oneof`_ ``_lacp_status``.
        operational_status (str):
            The operational status of the link.
            Check the OperationalStatus enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_operational_status``.
        receiving_optical_power (google.cloud.compute_v1.types.InterconnectDiagnosticsLinkOpticalPower):
            An InterconnectDiagnostics.LinkOpticalPower
            object, describing the current value and status
            of the received light level.

            This field is a member of `oneof`_ ``_receiving_optical_power``.
        transmitting_optical_power (google.cloud.compute_v1.types.InterconnectDiagnosticsLinkOpticalPower):
            An InterconnectDiagnostics.LinkOpticalPower
            object, describing the current value and status
            of the transmitted light level.

            This field is a member of `oneof`_ ``_transmitting_optical_power``.
    """

    class OperationalStatus(proto.Enum):
        r"""The operational status of the link.

        Values:
            UNDEFINED_OPERATIONAL_STATUS (0):
                A value indicating that the enum field is not
                set.
            LINK_OPERATIONAL_STATUS_DOWN (281653885):
                The interface is unable to communicate with
                the remote end.
            LINK_OPERATIONAL_STATUS_UP (305879862):
                The interface has low level communication
                with the remote end.
        """
        UNDEFINED_OPERATIONAL_STATUS = 0
        LINK_OPERATIONAL_STATUS_DOWN = 281653885
        LINK_OPERATIONAL_STATUS_UP = 305879862

    arp_caches: MutableSequence[
        "InterconnectDiagnosticsARPEntry"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=414591761,
        message="InterconnectDiagnosticsARPEntry",
    )
    circuit_id: str = proto.Field(
        proto.STRING,
        number=225180977,
        optional=True,
    )
    google_demarc: str = proto.Field(
        proto.STRING,
        number=51084,
        optional=True,
    )
    lacp_status: "InterconnectDiagnosticsLinkLACPStatus" = proto.Field(
        proto.MESSAGE,
        number=361210415,
        optional=True,
        message="InterconnectDiagnosticsLinkLACPStatus",
    )
    operational_status: str = proto.Field(
        proto.STRING,
        number=201070847,
        optional=True,
    )
    receiving_optical_power: "InterconnectDiagnosticsLinkOpticalPower" = proto.Field(
        proto.MESSAGE,
        number=244717279,
        optional=True,
        message="InterconnectDiagnosticsLinkOpticalPower",
    )
    transmitting_optical_power: "InterconnectDiagnosticsLinkOpticalPower" = proto.Field(
        proto.MESSAGE,
        number=459431197,
        optional=True,
        message="InterconnectDiagnosticsLinkOpticalPower",
    )


class InterconnectList(proto.Message):
    r"""Response to the list request, and contains a list of
    interconnects.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Interconnect]):
            A list of Interconnect resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#interconnectList for lists of interconnects.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Interconnect"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Interconnect",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InterconnectLocation(proto.Message):
    r"""Represents an Interconnect Attachment (VLAN) Location
    resource. You can use this resource to find location details
    about an Interconnect attachment (VLAN). For more information
    about interconnect attachments, read Creating VLAN Attachments.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        address (str):
            [Output Only] The postal address of the Point of Presence,
            each line in the address is separated by a newline
            character.

            This field is a member of `oneof`_ ``_address``.
        availability_zone (str):
            [Output Only] Availability zone for this
            InterconnectLocation. Within a metropolitan area (metro),
            maintenance will not be simultaneously scheduled in more
            than one availability zone. Example: "zone1" or "zone2".

            This field is a member of `oneof`_ ``_availability_zone``.
        city (str):
            [Output Only] Metropolitan area designator that indicates
            which city an interconnect is located. For example:
            "Chicago, IL", "Amsterdam, Netherlands".

            This field is a member of `oneof`_ ``_city``.
        continent (str):
            [Output Only] Continent for this location, which can take
            one of the following values: - AFRICA - ASIA_PAC - EUROPE -
            NORTH_AMERICA - SOUTH_AMERICA Check the Continent enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_continent``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            [Output Only] An optional description of the resource.

            This field is a member of `oneof`_ ``_description``.
        facility_provider (str):
            [Output Only] The name of the provider for this facility
            (e.g., EQUINIX).

            This field is a member of `oneof`_ ``_facility_provider``.
        facility_provider_facility_id (str):
            [Output Only] A provider-assigned Identifier for this
            facility (e.g., Ashburn-DC1).

            This field is a member of `oneof`_ ``_facility_provider_facility_id``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#interconnectLocation for interconnect locations.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            [Output Only] Name of the resource.

            This field is a member of `oneof`_ ``_name``.
        peeringdb_facility_id (str):
            [Output Only] The peeringdb identifier for this facility
            (corresponding with a netfac type in peeringdb).

            This field is a member of `oneof`_ ``_peeringdb_facility_id``.
        region_infos (MutableSequence[google.cloud.compute_v1.types.InterconnectLocationRegionInfo]):
            [Output Only] A list of InterconnectLocation.RegionInfo
            objects, that describe parameters pertaining to the relation
            between this InterconnectLocation and various Google Cloud
            regions.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        status (str):
            [Output Only] The status of this InterconnectLocation, which
            can take one of the following values: - CLOSED: The
            InterconnectLocation is closed and is unavailable for
            provisioning new Interconnects. - AVAILABLE: The
            InterconnectLocation is available for provisioning new
            Interconnects. Check the Status enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_status``.
        supports_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_supports_pzs``.
    """

    class Continent(proto.Enum):
        r"""[Output Only] Continent for this location, which can take one of the
        following values: - AFRICA - ASIA_PAC - EUROPE - NORTH_AMERICA -
        SOUTH_AMERICA

        Values:
            UNDEFINED_CONTINENT (0):
                A value indicating that the enum field is not
                set.
            AFRICA (317443706):
                No description available.
            ASIA_PAC (119782269):
                No description available.
            C_AFRICA (71993846):
                No description available.
            C_ASIA_PAC (465668089):
                No description available.
            C_EUROPE (200369438):
                No description available.
            C_NORTH_AMERICA (275697048):
                No description available.
            C_SOUTH_AMERICA (397149792):
                No description available.
            EUROPE (445819298):
                No description available.
            NORTH_AMERICA (448015508):
                No description available.
            SOUTH_AMERICA (32597340):
                No description available.
        """
        UNDEFINED_CONTINENT = 0
        AFRICA = 317443706
        ASIA_PAC = 119782269
        C_AFRICA = 71993846
        C_ASIA_PAC = 465668089
        C_EUROPE = 200369438
        C_NORTH_AMERICA = 275697048
        C_SOUTH_AMERICA = 397149792
        EUROPE = 445819298
        NORTH_AMERICA = 448015508
        SOUTH_AMERICA = 32597340

    class Status(proto.Enum):
        r"""[Output Only] The status of this InterconnectLocation, which can
        take one of the following values: - CLOSED: The InterconnectLocation
        is closed and is unavailable for provisioning new Interconnects. -
        AVAILABLE: The InterconnectLocation is available for provisioning
        new Interconnects.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            AVAILABLE (442079913):
                The InterconnectLocation is available for
                provisioning new Interconnects.
            CLOSED (380163436):
                The InterconnectLocation is closed for
                provisioning new Interconnects.
        """
        UNDEFINED_STATUS = 0
        AVAILABLE = 442079913
        CLOSED = 380163436

    address: str = proto.Field(
        proto.STRING,
        number=462920692,
        optional=True,
    )
    availability_zone: str = proto.Field(
        proto.STRING,
        number=158459920,
        optional=True,
    )
    city: str = proto.Field(
        proto.STRING,
        number=3053931,
        optional=True,
    )
    continent: str = proto.Field(
        proto.STRING,
        number=133442996,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    facility_provider: str = proto.Field(
        proto.STRING,
        number=533303309,
        optional=True,
    )
    facility_provider_facility_id: str = proto.Field(
        proto.STRING,
        number=87269125,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    peeringdb_facility_id: str = proto.Field(
        proto.STRING,
        number=536567094,
        optional=True,
    )
    region_infos: MutableSequence[
        "InterconnectLocationRegionInfo"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=312194170,
        message="InterconnectLocationRegionInfo",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    supports_pzs: bool = proto.Field(
        proto.BOOL,
        number=83983214,
        optional=True,
    )


class InterconnectLocationList(proto.Message):
    r"""Response to the list request, and contains a list of
    interconnect locations.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.InterconnectLocation]):
            A list of InterconnectLocation resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#interconnectLocationList for lists of interconnect
            locations.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["InterconnectLocation"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InterconnectLocation",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class InterconnectLocationRegionInfo(proto.Message):
    r"""Information about any potential InterconnectAttachments
    between an Interconnect at a specific InterconnectLocation, and
    a specific Cloud Region.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        expected_rtt_ms (int):
            Expected round-trip time in milliseconds,
            from this InterconnectLocation to a VM in this
            region.

            This field is a member of `oneof`_ ``_expected_rtt_ms``.
        location_presence (str):
            Identifies the network presence of this
            location. Check the LocationPresence enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_location_presence``.
        region (str):
            URL for the region of this location.

            This field is a member of `oneof`_ ``_region``.
    """

    class LocationPresence(proto.Enum):
        r"""Identifies the network presence of this location.

        Values:
            UNDEFINED_LOCATION_PRESENCE (0):
                A value indicating that the enum field is not
                set.
            GLOBAL (494663587):
                This region is not in any common network
                presence with this InterconnectLocation.
            LOCAL_REGION (403535464):
                This region shares the same regional network
                presence as this InterconnectLocation.
            LP_GLOBAL (429584062):
                [Deprecated] This region is not in any common network
                presence with this InterconnectLocation.
            LP_LOCAL_REGION (488598851):
                [Deprecated] This region shares the same regional network
                presence as this InterconnectLocation.
        """
        UNDEFINED_LOCATION_PRESENCE = 0
        GLOBAL = 494663587
        LOCAL_REGION = 403535464
        LP_GLOBAL = 429584062
        LP_LOCAL_REGION = 488598851

    expected_rtt_ms: int = proto.Field(
        proto.INT64,
        number=422543866,
        optional=True,
    )
    location_presence: str = proto.Field(
        proto.STRING,
        number=101517893,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )


class InterconnectOutageNotification(proto.Message):
    r"""Description of a planned outage on this Interconnect.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        affected_circuits (MutableSequence[str]):
            If issue_type is IT_PARTIAL_OUTAGE, a list of the
            Google-side circuit IDs that will be affected.
        description (str):
            A description about the purpose of the
            outage.

            This field is a member of `oneof`_ ``_description``.
        end_time (int):
            Scheduled end time for the outage
            (milliseconds since Unix epoch).

            This field is a member of `oneof`_ ``_end_time``.
        issue_type (str):
            Form this outage is expected to take, which can take one of
            the following values: - OUTAGE: The Interconnect may be
            completely out of service for some or all of the specified
            window. - PARTIAL_OUTAGE: Some circuits comprising the
            Interconnect as a whole should remain up, but with reduced
            bandwidth. Note that the versions of this enum prefixed with
            `IT_` have been deprecated in favor of the unprefixed
            values. Check the IssueType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_issue_type``.
        name (str):
            Unique identifier for this outage
            notification.

            This field is a member of `oneof`_ ``_name``.
        source (str):
            The party that generated this notification, which can take
            the following value: - GOOGLE: this notification as
            generated by Google. Note that the value of NSRC_GOOGLE has
            been deprecated in favor of GOOGLE. Check the Source enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_source``.
        start_time (int):
            Scheduled start time for the outage
            (milliseconds since Unix epoch).

            This field is a member of `oneof`_ ``_start_time``.
        state (str):
            State of this notification, which can take one of the
            following values: - ACTIVE: This outage notification is
            active. The event could be in the past, present, or future.
            See start_time and end_time for scheduling. - CANCELLED: The
            outage associated with this notification was cancelled
            before the outage was due to start. - COMPLETED: The outage
            associated with this notification is complete. Note that the
            versions of this enum prefixed with `NS_` have been
            deprecated in favor of the unprefixed values. Check the
            State enum for the list of possible values.

            This field is a member of `oneof`_ ``_state``.
    """

    class IssueType(proto.Enum):
        r"""Form this outage is expected to take, which can take one of the
        following values: - OUTAGE: The Interconnect may be completely out
        of service for some or all of the specified window. -
        PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole
        should remain up, but with reduced bandwidth. Note that the versions
        of this enum prefixed with `IT_` have been deprecated in favor of
        the unprefixed values.

        Values:
            UNDEFINED_ISSUE_TYPE (0):
                A value indicating that the enum field is not
                set.
            IT_OUTAGE (175779973):
                [Deprecated] The Interconnect may be completely out of
                service for some or all of the specified window.
            IT_PARTIAL_OUTAGE (92103971):
                [Deprecated] Some circuits comprising the Interconnect will
                be out of service during the expected window. The
                interconnect as a whole should remain up, albeit with
                reduced bandwidth.
            OUTAGE (195285745):
                The Interconnect may be completely out of
                service for some or all of the specified window.
            PARTIAL_OUTAGE (147053455):
                Some circuits comprising the Interconnect
                will be out of service during the expected
                window. The interconnect as a whole should
                remain up, albeit with reduced bandwidth.
        """
        UNDEFINED_ISSUE_TYPE = 0
        IT_OUTAGE = 175779973
        IT_PARTIAL_OUTAGE = 92103971
        OUTAGE = 195285745
        PARTIAL_OUTAGE = 147053455

    class Source(proto.Enum):
        r"""The party that generated this notification, which can take the
        following value: - GOOGLE: this notification as generated by Google.
        Note that the value of NSRC_GOOGLE has been deprecated in favor of
        GOOGLE.

        Values:
            UNDEFINED_SOURCE (0):
                A value indicating that the enum field is not
                set.
            GOOGLE (497439289):
                This notification was generated by Google.
            NSRC_GOOGLE (510574562):
                [Deprecated] This notification was generated by Google.
        """
        UNDEFINED_SOURCE = 0
        GOOGLE = 497439289
        NSRC_GOOGLE = 510574562

    class State(proto.Enum):
        r"""State of this notification, which can take one of the following
        values: - ACTIVE: This outage notification is active. The event
        could be in the past, present, or future. See start_time and
        end_time for scheduling. - CANCELLED: The outage associated with
        this notification was cancelled before the outage was due to start.
        - COMPLETED: The outage associated with this notification is
        complete. Note that the versions of this enum prefixed with `NS_`
        have been deprecated in favor of the unprefixed values.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                This outage notification is active. The event could be in
                the future, present, or past. See start_time and end_time
                for scheduling.
            CANCELLED (41957681):
                The outage associated with this notification
                was cancelled before the outage was due to
                start.
            COMPLETED (309921323):
                The outage associated with this notification
                is complete.
            NS_ACTIVE (252563136):
                [Deprecated] This outage notification is active. The event
                could be in the future, present, or past. See start_time and
                end_time for scheduling.
            NS_CANCELED (506579411):
                [Deprecated] The outage associated with this notification
                was canceled before the outage was due to start.
        """
        UNDEFINED_STATE = 0
        ACTIVE = 314733318
        CANCELLED = 41957681
        COMPLETED = 309921323
        NS_ACTIVE = 252563136
        NS_CANCELED = 506579411

    affected_circuits: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=177717013,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    end_time: int = proto.Field(
        proto.INT64,
        number=114938801,
        optional=True,
    )
    issue_type: str = proto.Field(
        proto.STRING,
        number=369639136,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    source: str = proto.Field(
        proto.STRING,
        number=177235995,
        optional=True,
    )
    start_time: int = proto.Field(
        proto.INT64,
        number=37467274,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )


class InterconnectsGetDiagnosticsResponse(proto.Message):
    r"""Response for the InterconnectsGetDiagnosticsRequest.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        result (google.cloud.compute_v1.types.InterconnectDiagnostics):

            This field is a member of `oneof`_ ``_result``.
    """

    result: "InterconnectDiagnostics" = proto.Field(
        proto.MESSAGE,
        number=139315229,
        optional=True,
        message="InterconnectDiagnostics",
    )


class InvalidateCacheUrlMapRequest(proto.Message):
    r"""A request message for UrlMaps.InvalidateCache. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        cache_invalidation_rule_resource (google.cloud.compute_v1.types.CacheInvalidationRule):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        url_map (str):
            Name of the UrlMap scoping this request.
    """

    cache_invalidation_rule_resource: "CacheInvalidationRule" = proto.Field(
        proto.MESSAGE,
        number=312795565,
        message="CacheInvalidationRule",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )


class Items(proto.Message):
    r"""Metadata

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        key (str):
            Key for the metadata entry. Keys must conform to the
            following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes
            in length. This is reflected as part of a URL in the
            metadata server. Additionally, to avoid ambiguity, keys must
            not conflict with any other metadata keys for the project.

            This field is a member of `oneof`_ ``_key``.
        value (str):
            Value for the metadata entry. These are
            free-form strings, and only have meaning as
            interpreted by the image running in the
            instance. The only restriction placed on values
            is that their size must be less than or equal to
            262144 bytes (256 KiB).

            This field is a member of `oneof`_ ``_value``.
    """

    key: str = proto.Field(
        proto.STRING,
        number=106079,
        optional=True,
    )
    value: str = proto.Field(
        proto.STRING,
        number=111972721,
        optional=True,
    )


class License(proto.Message):
    r"""Represents a License resource. A License represents billing and
    aggregate usage data for public and marketplace images. *Caution*
    This resource is intended for use only by third-party partners who
    are creating Cloud Marketplace images.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        charges_use_fee (bool):
            [Output Only] Deprecated. This field no longer reflects
            whether a license charges a usage fee.

            This field is a member of `oneof`_ ``_charges_use_fee``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional textual description of the
            resource; provided by the client when the
            resource is created.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of resource. Always compute#license for
            licenses.

            This field is a member of `oneof`_ ``_kind``.
        license_code (int):
            [Output Only] The unique code used to attach this license to
            images, snapshots, and disks.

            This field is a member of `oneof`_ ``_license_code``.
        name (str):
            Name of the resource. The name must be 1-63
            characters long and comply with RFC1035.

            This field is a member of `oneof`_ ``_name``.
        resource_requirements (google.cloud.compute_v1.types.LicenseResourceRequirements):

            This field is a member of `oneof`_ ``_resource_requirements``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        transferable (bool):
            If false, licenses will not be copied from
            the source resource when creating an image from
            a disk, disk from snapshot, or snapshot from
            disk.

            This field is a member of `oneof`_ ``_transferable``.
    """

    charges_use_fee: bool = proto.Field(
        proto.BOOL,
        number=372412622,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    license_code: int = proto.Field(
        proto.UINT64,
        number=1467179,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    resource_requirements: "LicenseResourceRequirements" = proto.Field(
        proto.MESSAGE,
        number=214292769,
        optional=True,
        message="LicenseResourceRequirements",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    transferable: bool = proto.Field(
        proto.BOOL,
        number=4349893,
        optional=True,
    )


class LicenseCode(proto.Message):
    r"""Represents a License Code resource. A License Code is a unique
    identifier used to represent a license resource. *Caution* This
    resource is intended for use only by third-party partners who are
    creating Cloud Marketplace images.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            [Output Only] Description of this License Code.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of resource. Always compute#licenseCode
            for licenses.

            This field is a member of `oneof`_ ``_kind``.
        license_alias (MutableSequence[google.cloud.compute_v1.types.LicenseCodeLicenseAlias]):
            [Output Only] URL and description aliases of Licenses with
            the same License Code.
        name (str):
            [Output Only] Name of the resource. The name is 1-20
            characters long and must be a valid 64 bit integer.

            This field is a member of `oneof`_ ``_name``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        state (str):
            [Output Only] Current state of this License Code. Check the
            State enum for the list of possible values.

            This field is a member of `oneof`_ ``_state``.
        transferable (bool):
            [Output Only] If true, the license will remain attached when
            creating images or snapshots from disks. Otherwise, the
            license is not transferred.

            This field is a member of `oneof`_ ``_transferable``.
    """

    class State(proto.Enum):
        r"""[Output Only] Current state of this License Code.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            DISABLED (516696700):
                Machines are not allowed to attach boot disks
                with this License Code. Requests to create new
                resources with this license will be rejected.
            ENABLED (182130465):
                Use is allowed for anyone with USE_READ_ONLY access to this
                License Code.
            RESTRICTED (261551195):
                Use of this license is limited to a project
                whitelist.
            STATE_UNSPECIFIED (470755401):
                No description available.
            TERMINATED (250018339):
                Reserved state.
        """
        UNDEFINED_STATE = 0
        DISABLED = 516696700
        ENABLED = 182130465
        RESTRICTED = 261551195
        STATE_UNSPECIFIED = 470755401
        TERMINATED = 250018339

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    license_alias: MutableSequence["LicenseCodeLicenseAlias"] = proto.RepeatedField(
        proto.MESSAGE,
        number=43550930,
        message="LicenseCodeLicenseAlias",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )
    transferable: bool = proto.Field(
        proto.BOOL,
        number=4349893,
        optional=True,
    )


class LicenseCodeLicenseAlias(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        description (str):
            [Output Only] Description of this License Code.

            This field is a member of `oneof`_ ``_description``.
        self_link (str):
            [Output Only] URL of license corresponding to this License
            Code.

            This field is a member of `oneof`_ ``_self_link``.
    """

    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )


class LicenseResourceCommitment(proto.Message):
    r"""Commitment for a particular license resource.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        amount (int):
            The number of licenses purchased.

            This field is a member of `oneof`_ ``_amount``.
        cores_per_license (str):
            Specifies the core range of the instance for
            which this license applies.

            This field is a member of `oneof`_ ``_cores_per_license``.
        license_ (str):
            Any applicable license URI.

            This field is a member of `oneof`_ ``_license``.
    """

    amount: int = proto.Field(
        proto.INT64,
        number=196759640,
        optional=True,
    )
    cores_per_license: str = proto.Field(
        proto.STRING,
        number=32482324,
        optional=True,
    )
    license_: str = proto.Field(
        proto.STRING,
        number=166757441,
        optional=True,
    )


class LicenseResourceRequirements(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        min_guest_cpu_count (int):
            Minimum number of guest cpus required to use
            the Instance. Enforced at Instance creation and
            Instance start.

            This field is a member of `oneof`_ ``_min_guest_cpu_count``.
        min_memory_mb (int):
            Minimum memory required to use the Instance.
            Enforced at Instance creation and Instance
            start.

            This field is a member of `oneof`_ ``_min_memory_mb``.
    """

    min_guest_cpu_count: int = proto.Field(
        proto.INT32,
        number=477964836,
        optional=True,
    )
    min_memory_mb: int = proto.Field(
        proto.INT32,
        number=504785894,
        optional=True,
    )


class LicensesListResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.License]):
            A list of License resources.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["License"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="License",
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ListAcceleratorTypesRequest(proto.Message):
    r"""A request message for AcceleratorTypes.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListAddressesRequest(proto.Message):
    r"""A request message for Addresses.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListAssociationsFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.ListAssociations. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target_resource (str):
            The target resource to list associations. It
            is an organization, or a folder.

            This field is a member of `oneof`_ ``_target_resource``.
    """

    target_resource: str = proto.Field(
        proto.STRING,
        number=467318524,
        optional=True,
    )


class ListAutoscalersRequest(proto.Message):
    r"""A request message for Autoscalers.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            Name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListAvailableFeaturesRegionSslPoliciesRequest(proto.Message):
    r"""A request message for
    RegionSslPolicies.ListAvailableFeatures. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListAvailableFeaturesSslPoliciesRequest(proto.Message):
    r"""A request message for SslPolicies.ListAvailableFeatures. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListBackendBucketsRequest(proto.Message):
    r"""A request message for BackendBuckets.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListBackendServicesRequest(proto.Message):
    r"""A request message for BackendServices.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListDiskTypesRequest(proto.Message):
    r"""A request message for DiskTypes.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListDisksRequest(proto.Message):
    r"""A request message for Disks.List. See the method description
    for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListErrorsInstanceGroupManagersRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.ListErrors. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        instance_group_manager (str):
            The name of the managed instance group. It must be a string
            that meets the requirements in RFC1035, or an unsigned long
            integer: must match regexp pattern:
            (?:`a-z <?:[-a-z0-9]{0,61}[a-z0-9]>`__?)|1-9{0,19}.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone where the managed
            instance group is located. It should conform to
            RFC1035.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListErrorsRegionInstanceGroupManagersRequest(proto.Message):
    r"""A request message for RegionInstanceGroupManagers.ListErrors.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        instance_group_manager (str):
            The name of the managed instance group. It must be a string
            that meets the requirements in RFC1035, or an unsigned long
            integer: must match regexp pattern:
            (?:`a-z <?:[-a-z0-9]{0,61}[a-z0-9]>`__?)|1-9{0,19}.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request. This
            should conform to RFC1035.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListExternalVpnGatewaysRequest(proto.Message):
    r"""A request message for ExternalVpnGateways.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListFirewallPoliciesRequest(proto.Message):
    r"""A request message for FirewallPolicies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        parent_id (str):
            Parent ID for this request. The ID can be either be
            "folders/[FOLDER_ID]" if the parent is a folder or
            "organizations/[ORGANIZATION_ID]" if the parent is an
            organization.

            This field is a member of `oneof`_ ``_parent_id``.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    parent_id: str = proto.Field(
        proto.STRING,
        number=459714768,
        optional=True,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListFirewallsRequest(proto.Message):
    r"""A request message for Firewalls.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListForwardingRulesRequest(proto.Message):
    r"""A request message for ForwardingRules.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListGlobalAddressesRequest(proto.Message):
    r"""A request message for GlobalAddresses.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListGlobalForwardingRulesRequest(proto.Message):
    r"""A request message for GlobalForwardingRules.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListGlobalNetworkEndpointGroupsRequest(proto.Message):
    r"""A request message for GlobalNetworkEndpointGroups.List. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListGlobalOperationsRequest(proto.Message):
    r"""A request message for GlobalOperations.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListGlobalOrganizationOperationsRequest(proto.Message):
    r"""A request message for GlobalOrganizationOperations.List. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        parent_id (str):
            Parent ID for this request.

            This field is a member of `oneof`_ ``_parent_id``.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    parent_id: str = proto.Field(
        proto.STRING,
        number=459714768,
        optional=True,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListGlobalPublicDelegatedPrefixesRequest(proto.Message):
    r"""A request message for GlobalPublicDelegatedPrefixes.List. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListHealthChecksRequest(proto.Message):
    r"""A request message for HealthChecks.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListImagesRequest(proto.Message):
    r"""A request message for Images.List. See the method description
    for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListInstanceGroupManagersRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListInstanceGroupsRequest(proto.Message):
    r"""A request message for InstanceGroups.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone where the instance group
            is located.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListInstanceTemplatesRequest(proto.Message):
    r"""A request message for InstanceTemplates.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListInstancesInstanceGroupsRequest(proto.Message):
    r"""A request message for InstanceGroups.ListInstances. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        instance_group (str):
            The name of the instance group from which you
            want to generate a list of included instances.
        instance_groups_list_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupsListInstancesRequest):
            The body resource for this request
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone where the instance group
            is located.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
    )
    instance_groups_list_instances_request_resource: "InstanceGroupsListInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=476255263,
        message="InstanceGroupsListInstancesRequest",
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListInstancesRegionInstanceGroupsRequest(proto.Message):
    r"""A request message for RegionInstanceGroups.ListInstances. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        instance_group (str):
            Name of the regional instance group for which
            we want to list the instances.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        region_instance_groups_list_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupsListInstancesRequest):
            The body resource for this request
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_groups_list_instances_request_resource: "RegionInstanceGroupsListInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=48239828,
        message="RegionInstanceGroupsListInstancesRequest",
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListInstancesRequest(proto.Message):
    r"""A request message for Instances.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListInterconnectAttachmentsRequest(proto.Message):
    r"""A request message for InterconnectAttachments.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListInterconnectLocationsRequest(proto.Message):
    r"""A request message for InterconnectLocations.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListInterconnectsRequest(proto.Message):
    r"""A request message for Interconnects.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListLicensesRequest(proto.Message):
    r"""A request message for Licenses.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListMachineImagesRequest(proto.Message):
    r"""A request message for MachineImages.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListMachineTypesRequest(proto.Message):
    r"""A request message for MachineTypes.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListManagedInstancesInstanceGroupManagersRequest(proto.Message):
    r"""A request message for
    InstanceGroupManagers.ListManagedInstances. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        instance_group_manager (str):
            The name of the managed instance group.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListManagedInstancesRegionInstanceGroupManagersRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.ListManagedInstances. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        instance_group_manager (str):
            The name of the managed instance group.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListNetworkAttachmentsRequest(proto.Message):
    r"""A request message for NetworkAttachments.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region of this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListNetworkEndpointGroupsRequest(proto.Message):
    r"""A request message for NetworkEndpointGroups.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone where the network
            endpoint group is located. It should comply with
            RFC1035.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message):
    r"""A request message for
    GlobalNetworkEndpointGroups.ListNetworkEndpoints. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        network_endpoint_group (str):
            The name of the network endpoint group from
            which you want to generate a list of included
            network endpoints. It should comply with
            RFC1035.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message):
    r"""A request message for
    NetworkEndpointGroups.ListNetworkEndpoints. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        network_endpoint_group (str):
            The name of the network endpoint group from
            which you want to generate a list of included
            network endpoints. It should comply with
            RFC1035.
        network_endpoint_groups_list_endpoints_request_resource (google.cloud.compute_v1.types.NetworkEndpointGroupsListEndpointsRequest):
            The body resource for this request
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone where the network
            endpoint group is located. It should comply with
            RFC1035.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    network_endpoint_group: str = proto.Field(
        proto.STRING,
        number=433907078,
    )
    network_endpoint_groups_list_endpoints_request_resource: "NetworkEndpointGroupsListEndpointsRequest" = proto.Field(
        proto.MESSAGE,
        number=59493390,
        message="NetworkEndpointGroupsListEndpointsRequest",
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListNetworkFirewallPoliciesRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListNetworksRequest(proto.Message):
    r"""A request message for Networks.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListNodeGroupsRequest(proto.Message):
    r"""A request message for NodeGroups.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListNodeTemplatesRequest(proto.Message):
    r"""A request message for NodeTemplates.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListNodeTypesRequest(proto.Message):
    r"""A request message for NodeTypes.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListNodesNodeGroupsRequest(proto.Message):
    r"""A request message for NodeGroups.ListNodes. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        node_group (str):
            Name of the NodeGroup resource whose nodes
            you want to list.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    node_group: str = proto.Field(
        proto.STRING,
        number=469958146,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListPacketMirroringsRequest(proto.Message):
    r"""A request message for PacketMirrorings.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListPeeringRoutesNetworksRequest(proto.Message):
    r"""A request message for Networks.ListPeeringRoutes. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        direction (str):
            The direction of the exchanged routes.
            Check the Direction enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_direction``.
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        network (str):
            Name of the network for this request.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        peering_name (str):
            The response will show routes exchanged over
            the given peering connection.

            This field is a member of `oneof`_ ``_peering_name``.
        project (str):
            Project ID for this request.
        region (str):
            The region of the request. The response will
            include all subnet routes, static routes and
            dynamic routes in the region.

            This field is a member of `oneof`_ ``_region``.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    class Direction(proto.Enum):
        r"""The direction of the exchanged routes.

        Values:
            UNDEFINED_DIRECTION (0):
                A value indicating that the enum field is not
                set.
            INCOMING (338552870):
                For routes exported from peer network.
            OUTGOING (307438444):
                For routes exported from local network.
        """
        UNDEFINED_DIRECTION = 0
        INCOMING = 338552870
        OUTGOING = 307438444

    direction: str = proto.Field(
        proto.STRING,
        number=111150975,
        optional=True,
    )
    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    peering_name: str = proto.Field(
        proto.STRING,
        number=249571370,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListPerInstanceConfigsInstanceGroupManagersRequest(proto.Message):
    r"""A request message for
    InstanceGroupManagers.ListPerInstanceConfigs. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone where the managed
            instance group is located. It should conform to
            RFC1035.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListPerInstanceConfigsRegionInstanceGroupManagersRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.ListPerInstanceConfigs. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request,
            should conform to RFC1035.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListPreconfiguredExpressionSetsSecurityPoliciesRequest(proto.Message):
    r"""A request message for
    SecurityPolicies.ListPreconfiguredExpressionSets. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListPublicAdvertisedPrefixesRequest(proto.Message):
    r"""A request message for PublicAdvertisedPrefixes.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListPublicDelegatedPrefixesRequest(proto.Message):
    r"""A request message for PublicDelegatedPrefixes.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region of this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListReferrersInstancesRequest(proto.Message):
    r"""A request message for Instances.ListReferrers. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        instance (str):
            Name of the target instance scoping this
            request, or '-' if the request should span over
            all instances in the container.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            The name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListRegionAutoscalersRequest(proto.Message):
    r"""A request message for RegionAutoscalers.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionBackendServicesRequest(proto.Message):
    r"""A request message for RegionBackendServices.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionCommitmentsRequest(proto.Message):
    r"""A request message for RegionCommitments.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionDiskTypesRequest(proto.Message):
    r"""A request message for RegionDiskTypes.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionDisksRequest(proto.Message):
    r"""A request message for RegionDisks.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionHealthCheckServicesRequest(proto.Message):
    r"""A request message for RegionHealthCheckServices.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionHealthChecksRequest(proto.Message):
    r"""A request message for RegionHealthChecks.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionInstanceGroupManagersRequest(proto.Message):
    r"""A request message for RegionInstanceGroupManagers.List. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionInstanceGroupsRequest(proto.Message):
    r"""A request message for RegionInstanceGroups.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionInstanceTemplatesRequest(proto.Message):
    r"""A request message for RegionInstanceTemplates.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the regions for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionNetworkEndpointGroupsRequest(proto.Message):
    r"""A request message for RegionNetworkEndpointGroups.List. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region where the network
            endpoint group is located. It should comply with
            RFC1035.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionNetworkFirewallPoliciesRequest(proto.Message):
    r"""A request message for RegionNetworkFirewallPolicies.List. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionNotificationEndpointsRequest(proto.Message):
    r"""A request message for RegionNotificationEndpoints.List. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionOperationsRequest(proto.Message):
    r"""A request message for RegionOperations.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionSecurityPoliciesRequest(proto.Message):
    r"""A request message for RegionSecurityPolicies.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionSslCertificatesRequest(proto.Message):
    r"""A request message for RegionSslCertificates.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionSslPoliciesRequest(proto.Message):
    r"""A request message for RegionSslPolicies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionTargetHttpProxiesRequest(proto.Message):
    r"""A request message for RegionTargetHttpProxies.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionTargetHttpsProxiesRequest(proto.Message):
    r"""A request message for RegionTargetHttpsProxies.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionTargetTcpProxiesRequest(proto.Message):
    r"""A request message for RegionTargetTcpProxies.List. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionUrlMapsRequest(proto.Message):
    r"""A request message for RegionUrlMaps.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRegionsRequest(proto.Message):
    r"""A request message for Regions.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListReservationsRequest(proto.Message):
    r"""A request message for Reservations.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            Name of the zone for this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListResourcePoliciesRequest(proto.Message):
    r"""A request message for ResourcePolicies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRoutersRequest(proto.Message):
    r"""A request message for Routers.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListRoutesRequest(proto.Message):
    r"""A request message for Routes.List. See the method description
    for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListSecurityPoliciesRequest(proto.Message):
    r"""A request message for SecurityPolicies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListServiceAttachmentsRequest(proto.Message):
    r"""A request message for ServiceAttachments.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region of this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListSnapshotsRequest(proto.Message):
    r"""A request message for Snapshots.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListSslCertificatesRequest(proto.Message):
    r"""A request message for SslCertificates.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListSslPoliciesRequest(proto.Message):
    r"""A request message for SslPolicies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListSubnetworksRequest(proto.Message):
    r"""A request message for Subnetworks.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListTargetGrpcProxiesRequest(proto.Message):
    r"""A request message for TargetGrpcProxies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListTargetHttpProxiesRequest(proto.Message):
    r"""A request message for TargetHttpProxies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListTargetHttpsProxiesRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListTargetInstancesRequest(proto.Message):
    r"""A request message for TargetInstances.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            Name of the zone scoping this request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListTargetPoolsRequest(proto.Message):
    r"""A request message for TargetPools.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListTargetSslProxiesRequest(proto.Message):
    r"""A request message for TargetSslProxies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListTargetTcpProxiesRequest(proto.Message):
    r"""A request message for TargetTcpProxies.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListTargetVpnGatewaysRequest(proto.Message):
    r"""A request message for TargetVpnGateways.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListUrlMapsRequest(proto.Message):
    r"""A request message for UrlMaps.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListUsableSubnetworksRequest(proto.Message):
    r"""A request message for Subnetworks.ListUsable. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListVpnGatewaysRequest(proto.Message):
    r"""A request message for VpnGateways.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListVpnTunnelsRequest(proto.Message):
    r"""A request message for VpnTunnels.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListXpnHostsProjectsRequest(proto.Message):
    r"""A request message for Projects.ListXpnHosts. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        projects_list_xpn_hosts_request_resource (google.cloud.compute_v1.types.ProjectsListXpnHostsRequest):
            The body resource for this request
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    projects_list_xpn_hosts_request_resource: "ProjectsListXpnHostsRequest" = (
        proto.Field(
            proto.MESSAGE,
            number=238266391,
            message="ProjectsListXpnHostsRequest",
        )
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class ListZoneOperationsRequest(proto.Message):
    r"""A request message for ZoneOperations.List. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
        zone (str):
            Name of the zone for request.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ListZonesRequest(proto.Message):
    r"""A request message for Zones.List. See the method description
    for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter (str):
            A filter expression that filters resources listed in the
            response. Most Compute resources support two types of filter
            expressions: expressions that support regular expressions
            and expressions that follow API improvement proposal
            AIP-160. If you want to use AIP-160, your expression must
            specify the field name, an operator, and the value that you
            want to use for filtering. The value must be a string, a
            number, or a boolean. The operator must be either ``=``,
            ``!=``, ``>``, ``<``, ``<=``, ``>=`` or ``:``. For example,
            if you are filtering Compute Engine instances, you can
            exclude instances named ``example-instance`` by specifying
            ``name != example-instance``. The ``:`` operator can be used
            with string fields to match substrings. For non-string
            fields it is equivalent to the ``=`` operator. The ``:*``
            comparison can be used to test whether a key has been
            defined. For example, to find all objects with ``owner``
            label use: ``labels.owner:*`` You can also filter nested
            fields. For example, you could specify
            ``scheduling.automaticRestart = false`` to include instances
            only if they are not scheduled for automatic restarts. You
            can use filtering on nested fields to filter based on
            resource labels. To filter on multiple expressions, provide
            each separate expression within parentheses. For example:
            ``(scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake")``
            By default, each expression is an ``AND`` expression.
            However, you can include ``AND`` and ``OR`` expressions
            explicitly. For example:
            ``(cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true)``
            If you want to use a regular expression, use the ``eq``
            (equal) or ``ne`` (not equal) operator against a single
            un-parenthesized expression with or without quotes or
            against multiple parenthesized expressions. Examples:
            ``fieldname eq unquoted literal``
            ``fieldname eq 'single quoted literal'``
            ``fieldname eq "double quoted literal"``
            ``(fieldname1 eq literal) (fieldname2 ne "literal")`` The
            literal value is interpreted as a regular expression using
            Google RE2 library syntax. The literal value must match the
            entire field. For example, to filter for instances that do
            not end with name "instance", you would use
            ``name ne .*instance``.

            This field is a member of `oneof`_ ``_filter``.
        max_results (int):
            The maximum number of results per page that should be
            returned. If the number of available results is larger than
            ``maxResults``, Compute Engine returns a ``nextPageToken``
            that can be used to get the next page of results in
            subsequent list requests. Acceptable values are ``0`` to
            ``500``, inclusive. (Default: ``500``)

            This field is a member of `oneof`_ ``_max_results``.
        order_by (str):
            Sorts list results by a certain order. By default, results
            are returned in alphanumerical order based on the resource
            name. You can also sort results in descending order based on
            the creation timestamp using
            ``orderBy="creationTimestamp desc"``. This sorts results
            based on the ``creationTimestamp`` field in reverse
            chronological order (newest result first). Use this to sort
            resources like operations so that the newest operation is
            returned first. Currently, only sorting by ``name`` or
            ``creationTimestamp desc`` is supported.

            This field is a member of `oneof`_ ``_order_by``.
        page_token (str):
            Specifies a page token to use. Set ``pageToken`` to the
            ``nextPageToken`` returned by a previous list request to get
            the next page of results.

            This field is a member of `oneof`_ ``_page_token``.
        project (str):
            Project ID for this request.
        return_partial_success (bool):
            Opt-in for partial success behavior which
            provides partial results in case of failure. The
            default value is false.

            This field is a member of `oneof`_ ``_return_partial_success``.
    """

    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )
    max_results: int = proto.Field(
        proto.UINT32,
        number=54715419,
        optional=True,
    )
    order_by: str = proto.Field(
        proto.STRING,
        number=160562920,
        optional=True,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=19994697,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    return_partial_success: bool = proto.Field(
        proto.BOOL,
        number=517198390,
        optional=True,
    )


class LocalDisk(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk_count (int):
            Specifies the number of such disks.

            This field is a member of `oneof`_ ``_disk_count``.
        disk_size_gb (int):
            Specifies the size of the disk in base-2 GB.

            This field is a member of `oneof`_ ``_disk_size_gb``.
        disk_type (str):
            Specifies the desired disk type on the node.
            This disk type must be a local storage type
            (e.g.: local-ssd). Note that for nodeTemplates,
            this should be the name of the disk type and not
            its URL.

            This field is a member of `oneof`_ ``_disk_type``.
    """

    disk_count: int = proto.Field(
        proto.INT32,
        number=182933485,
        optional=True,
    )
    disk_size_gb: int = proto.Field(
        proto.INT32,
        number=316263735,
        optional=True,
    )
    disk_type: str = proto.Field(
        proto.STRING,
        number=93009052,
        optional=True,
    )


class LocalizedMessage(proto.Message):
    r"""Provides a localized error message that is safe to return to
    the user which can be attached to an RPC error.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        locale (str):
            The locale used following the specification
            defined at
            https://www.rfc-editor.org/rfc/bcp/bcp47.txt.
            Examples are: "en-US", "fr-CH", "es-MX".

            This field is a member of `oneof`_ ``_locale``.
        message (str):
            The localized error message in the above
            locale.

            This field is a member of `oneof`_ ``_message``.
    """

    locale: str = proto.Field(
        proto.STRING,
        number=513150554,
        optional=True,
    )
    message: str = proto.Field(
        proto.STRING,
        number=418054151,
        optional=True,
    )


class LocationPolicy(proto.Message):
    r"""Configuration for location policy among multiple possible
    locations (e.g. preferences for zone selection among zones in a
    single region).


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        locations (MutableMapping[str, google.cloud.compute_v1.types.LocationPolicyLocation]):
            Location configurations mapped by location
            name. Currently only zone names are supported
            and must be represented as valid internal URLs,
            such as zones/us-central1-a.
        target_shape (str):
            Strategy for distributing VMs across zones in
            a region. Check the TargetShape enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_target_shape``.
    """

    class TargetShape(proto.Enum):
        r"""Strategy for distributing VMs across zones in a region.

        Values:
            UNDEFINED_TARGET_SHAPE (0):
                A value indicating that the enum field is not
                set.
            ANY (64972):
                GCE picks zones for creating VM instances to
                fulfill the requested number of VMs within
                present resource constraints and to maximize
                utilization of unused zonal reservations.
                Recommended for batch workloads that do not
                require high availability.
            ANY_SINGLE_ZONE (61100880):
                GCE always selects a single zone for all the
                VMs, optimizing for resource quotas, available
                reservations and general capacity. Recommended
                for batch workloads that cannot tollerate
                distribution over multiple zones. This the
                default shape in Bulk Insert and Capacity
                Advisor APIs.
            BALANCED (468409608):
                GCE prioritizes acquisition of resources,
                scheduling VMs in zones where resources are
                available while distributing VMs as evenly as
                possible across allowed zones to minimize the
                impact of zonal failure. Recommended for highly
                available serving workloads.
        """
        UNDEFINED_TARGET_SHAPE = 0
        ANY = 64972
        ANY_SINGLE_ZONE = 61100880
        BALANCED = 468409608

    locations: MutableMapping[str, "LocationPolicyLocation"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=413423454,
        message="LocationPolicyLocation",
    )
    target_shape: str = proto.Field(
        proto.STRING,
        number=338621299,
        optional=True,
    )


class LocationPolicyLocation(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        constraints (google.cloud.compute_v1.types.LocationPolicyLocationConstraints):
            Constraints that the caller requires on the
            result distribution in this zone.

            This field is a member of `oneof`_ ``_constraints``.
        preference (str):
            Preference for a given location. Set to
            either ALLOW or DENY. Check the Preference enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_preference``.
    """

    class Preference(proto.Enum):
        r"""Preference for a given location. Set to either ALLOW or DENY.

        Values:
            UNDEFINED_PREFERENCE (0):
                A value indicating that the enum field is not
                set.
            ALLOW (62368553):
                Location is allowed for use.
            DENY (2094604):
                Location is prohibited.
            PREFERENCE_UNSPECIFIED (496219571):
                Default value, unused.
        """
        UNDEFINED_PREFERENCE = 0
        ALLOW = 62368553
        DENY = 2094604
        PREFERENCE_UNSPECIFIED = 496219571

    constraints: "LocationPolicyLocationConstraints" = proto.Field(
        proto.MESSAGE,
        number=3909174,
        optional=True,
        message="LocationPolicyLocationConstraints",
    )
    preference: str = proto.Field(
        proto.STRING,
        number=150781147,
        optional=True,
    )


class LocationPolicyLocationConstraints(proto.Message):
    r"""Per-zone constraints on location policy for this zone.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        max_count (int):
            Maximum number of items that are allowed to
            be placed in this zone. The value must be
            non-negative.

            This field is a member of `oneof`_ ``_max_count``.
    """

    max_count: int = proto.Field(
        proto.INT32,
        number=287620724,
        optional=True,
    )


class LogConfig(proto.Message):
    r"""This is deprecated and has no effect. Do not use.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        cloud_audit (google.cloud.compute_v1.types.LogConfigCloudAuditOptions):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_cloud_audit``.
        counter (google.cloud.compute_v1.types.LogConfigCounterOptions):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_counter``.
        data_access (google.cloud.compute_v1.types.LogConfigDataAccessOptions):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_data_access``.
    """

    cloud_audit: "LogConfigCloudAuditOptions" = proto.Field(
        proto.MESSAGE,
        number=412852561,
        optional=True,
        message="LogConfigCloudAuditOptions",
    )
    counter: "LogConfigCounterOptions" = proto.Field(
        proto.MESSAGE,
        number=420959740,
        optional=True,
        message="LogConfigCounterOptions",
    )
    data_access: "LogConfigDataAccessOptions" = proto.Field(
        proto.MESSAGE,
        number=286633881,
        optional=True,
        message="LogConfigDataAccessOptions",
    )


class LogConfigCloudAuditOptions(proto.Message):
    r"""This is deprecated and has no effect. Do not use.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        authorization_logging_options (google.cloud.compute_v1.types.AuthorizationLoggingOptions):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_authorization_logging_options``.
        log_name (str):
            This is deprecated and has no effect. Do not
            use. Check the LogName enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_log_name``.
    """

    class LogName(proto.Enum):
        r"""This is deprecated and has no effect. Do not use.

        Values:
            UNDEFINED_LOG_NAME (0):
                A value indicating that the enum field is not
                set.
            ADMIN_ACTIVITY (427503135):
                This is deprecated and has no effect. Do not
                use.
            DATA_ACCESS (238070681):
                This is deprecated and has no effect. Do not
                use.
            UNSPECIFIED_LOG_NAME (410515182):
                This is deprecated and has no effect. Do not
                use.
        """
        UNDEFINED_LOG_NAME = 0
        ADMIN_ACTIVITY = 427503135
        DATA_ACCESS = 238070681
        UNSPECIFIED_LOG_NAME = 410515182

    authorization_logging_options: "AuthorizationLoggingOptions" = proto.Field(
        proto.MESSAGE,
        number=217861624,
        optional=True,
        message="AuthorizationLoggingOptions",
    )
    log_name: str = proto.Field(
        proto.STRING,
        number=402913958,
        optional=True,
    )


class LogConfigCounterOptions(proto.Message):
    r"""This is deprecated and has no effect. Do not use.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        custom_fields (MutableSequence[google.cloud.compute_v1.types.LogConfigCounterOptionsCustomField]):
            This is deprecated and has no effect. Do not
            use.
        field (str):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_field``.
        metric (str):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_metric``.
    """

    custom_fields: MutableSequence[
        "LogConfigCounterOptionsCustomField"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=249651015,
        message="LogConfigCounterOptionsCustomField",
    )
    field: str = proto.Field(
        proto.STRING,
        number=97427706,
        optional=True,
    )
    metric: str = proto.Field(
        proto.STRING,
        number=533067184,
        optional=True,
    )


class LogConfigCounterOptionsCustomField(proto.Message):
    r"""This is deprecated and has no effect. Do not use.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_name``.
        value (str):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_value``.
    """

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    value: str = proto.Field(
        proto.STRING,
        number=111972721,
        optional=True,
    )


class LogConfigDataAccessOptions(proto.Message):
    r"""This is deprecated and has no effect. Do not use.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        log_mode (str):
            This is deprecated and has no effect. Do not
            use. Check the LogMode enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_log_mode``.
    """

    class LogMode(proto.Enum):
        r"""This is deprecated and has no effect. Do not use.

        Values:
            UNDEFINED_LOG_MODE (0):
                A value indicating that the enum field is not
                set.
            LOG_FAIL_CLOSED (360469778):
                This is deprecated and has no effect. Do not
                use.
            LOG_MODE_UNSPECIFIED (88160822):
                This is deprecated and has no effect. Do not
                use.
        """
        UNDEFINED_LOG_MODE = 0
        LOG_FAIL_CLOSED = 360469778
        LOG_MODE_UNSPECIFIED = 88160822

    log_mode: str = proto.Field(
        proto.STRING,
        number=402897342,
        optional=True,
    )


class MachineImage(proto.Message):
    r"""Represents a machine image resource. A machine image is a
    Compute Engine resource that stores all the configuration,
    metadata, permissions, and data from one or more disks required
    to create a Virtual machine (VM) instance. For more information,
    see Machine images.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] The creation timestamp for this machine image
            in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        guest_flush (bool):
            [Input Only] Whether to attempt an application consistent
            machine image by informing the OS to prepare for the
            snapshot process.

            This field is a member of `oneof`_ ``_guest_flush``.
        id (int):
            [Output Only] A unique identifier for this machine image.
            The server defines this identifier.

            This field is a member of `oneof`_ ``_id``.
        instance_properties (google.cloud.compute_v1.types.InstanceProperties):
            [Output Only] Properties of source instance

            This field is a member of `oneof`_ ``_instance_properties``.
        kind (str):
            [Output Only] The resource type, which is always
            compute#machineImage for machine image.

            This field is a member of `oneof`_ ``_kind``.
        machine_image_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            Encrypts the machine image using a
            customer-supplied encryption key. After you
            encrypt a machine image using a
            customer-supplied key, you must provide the same
            key if you use the machine image later. For
            example, you must provide the encryption key
            when you create an instance from the encrypted
            machine image in a future request.
            Customer-supplied encryption keys do not protect
            access to metadata of the machine image. If you
            do not provide an encryption key when creating
            the machine image, then the machine image will
            be encrypted using an automatically generated
            key and you do not need to provide a key to use
            the machine image later.

            This field is a member of `oneof`_ ``_machine_image_encryption_key``.
        name (str):
            Name of the resource; provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        satisfies_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_satisfies_pzs``.
        saved_disks (MutableSequence[google.cloud.compute_v1.types.SavedDisk]):
            An array of Machine Image specific properties
            for disks attached to the source instance
        self_link (str):
            [Output Only] The URL for this machine image. The server
            defines this URL.

            This field is a member of `oneof`_ ``_self_link``.
        source_disk_encryption_keys (MutableSequence[google.cloud.compute_v1.types.SourceDiskEncryptionKey]):
            [Input Only] The customer-supplied encryption key of the
            disks attached to the source instance. Required if the
            source disk is protected by a customer-supplied encryption
            key.
        source_instance (str):
            The source instance used to create the
            machine image. You can provide this as a partial
            or full URL to the resource. For example, the
            following are valid values: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /instances/instance -
            projects/project/zones/zone/instances/instance

            This field is a member of `oneof`_ ``_source_instance``.
        source_instance_properties (google.cloud.compute_v1.types.SourceInstanceProperties):
            [Output Only] DEPRECATED: Please use instance_properties
            instead for source instance related properties. New
            properties will not be added to this field.

            This field is a member of `oneof`_ ``_source_instance_properties``.
        status (str):
            [Output Only] The status of the machine image. One of the
            following values: INVALID, CREATING, READY, DELETING, and
            UPLOADING. Check the Status enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_status``.
        storage_locations (MutableSequence[str]):
            The regional or multi-regional Cloud Storage
            bucket location where the machine image is
            stored.
        total_storage_bytes (int):
            [Output Only] Total size of the storage used by the machine
            image.

            This field is a member of `oneof`_ ``_total_storage_bytes``.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of the machine image. One of the following
        values: INVALID, CREATING, READY, DELETING, and UPLOADING.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            CREATING (455564985):
                No description available.
            DELETING (528602024):
                No description available.
            INVALID (530283991):
                No description available.
            READY (77848963):
                No description available.
            UPLOADING (267603489):
                No description available.
        """
        UNDEFINED_STATUS = 0
        CREATING = 455564985
        DELETING = 528602024
        INVALID = 530283991
        READY = 77848963
        UPLOADING = 267603489

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    guest_flush: bool = proto.Field(
        proto.BOOL,
        number=385550813,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    instance_properties: "InstanceProperties" = proto.Field(
        proto.MESSAGE,
        number=215355165,
        optional=True,
        message="InstanceProperties",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    machine_image_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=528089087,
        optional=True,
        message="CustomerEncryptionKey",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    satisfies_pzs: bool = proto.Field(
        proto.BOOL,
        number=480964267,
        optional=True,
    )
    saved_disks: MutableSequence["SavedDisk"] = proto.RepeatedField(
        proto.MESSAGE,
        number=397424318,
        message="SavedDisk",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    source_disk_encryption_keys: MutableSequence[
        "SourceDiskEncryptionKey"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=370408498,
        message="SourceDiskEncryptionKey",
    )
    source_instance: str = proto.Field(
        proto.STRING,
        number=396315705,
        optional=True,
    )
    source_instance_properties: "SourceInstanceProperties" = proto.Field(
        proto.MESSAGE,
        number=475195641,
        optional=True,
        message="SourceInstanceProperties",
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    storage_locations: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=328005274,
    )
    total_storage_bytes: int = proto.Field(
        proto.INT64,
        number=81855468,
        optional=True,
    )


class MachineImageList(proto.Message):
    r"""A list of machine images.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.MachineImage]):
            A list of MachineImage resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#machineImagesListResponse for machine image lists.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["MachineImage"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="MachineImage",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class MachineType(proto.Message):
    r"""Represents a Machine Type resource. You can use specific
    machine types for your VM instances based on performance and
    pricing requirements. For more information, read Machine Types.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        accelerators (MutableSequence[google.cloud.compute_v1.types.Accelerators]):
            [Output Only] A list of accelerator configurations assigned
            to this machine type.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        deprecated (google.cloud.compute_v1.types.DeprecationStatus):
            [Output Only] The deprecation status associated with this
            machine type. Only applicable if the machine type is
            unavailable.

            This field is a member of `oneof`_ ``_deprecated``.
        description (str):
            [Output Only] An optional textual description of the
            resource.

            This field is a member of `oneof`_ ``_description``.
        guest_cpus (int):
            [Output Only] The number of virtual CPUs that are available
            to the instance.

            This field is a member of `oneof`_ ``_guest_cpus``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        image_space_gb (int):
            [Deprecated] This property is deprecated and will never be
            populated with any relevant values.

            This field is a member of `oneof`_ ``_image_space_gb``.
        is_shared_cpu (bool):
            [Output Only] Whether this machine type has a shared CPU.
            See Shared-core machine types for more information.

            This field is a member of `oneof`_ ``_is_shared_cpu``.
        kind (str):
            [Output Only] The type of the resource. Always
            compute#machineType for machine types.

            This field is a member of `oneof`_ ``_kind``.
        maximum_persistent_disks (int):
            [Output Only] Maximum persistent disks allowed.

            This field is a member of `oneof`_ ``_maximum_persistent_disks``.
        maximum_persistent_disks_size_gb (int):
            [Output Only] Maximum total persistent disks size (GB)
            allowed.

            This field is a member of `oneof`_ ``_maximum_persistent_disks_size_gb``.
        memory_mb (int):
            [Output Only] The amount of physical memory available to the
            instance, defined in MB.

            This field is a member of `oneof`_ ``_memory_mb``.
        name (str):
            [Output Only] Name of the resource.

            This field is a member of `oneof`_ ``_name``.
        scratch_disks (MutableSequence[google.cloud.compute_v1.types.ScratchDisks]):
            [Output Only] A list of extended scratch disks assigned to
            the instance.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        zone (str):
            [Output Only] The name of the zone where the machine type
            resides, such as us-central1-a.

            This field is a member of `oneof`_ ``_zone``.
    """

    accelerators: MutableSequence["Accelerators"] = proto.RepeatedField(
        proto.MESSAGE,
        number=269577064,
        message="Accelerators",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    deprecated: "DeprecationStatus" = proto.Field(
        proto.MESSAGE,
        number=515138995,
        optional=True,
        message="DeprecationStatus",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    guest_cpus: int = proto.Field(
        proto.INT32,
        number=393356754,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    image_space_gb: int = proto.Field(
        proto.INT32,
        number=75331864,
        optional=True,
    )
    is_shared_cpu: bool = proto.Field(
        proto.BOOL,
        number=521399555,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    maximum_persistent_disks: int = proto.Field(
        proto.INT32,
        number=496220941,
        optional=True,
    )
    maximum_persistent_disks_size_gb: int = proto.Field(
        proto.INT64,
        number=154274471,
        optional=True,
    )
    memory_mb: int = proto.Field(
        proto.INT32,
        number=116001171,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    scratch_disks: MutableSequence["ScratchDisks"] = proto.RepeatedField(
        proto.MESSAGE,
        number=480778481,
        message="ScratchDisks",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class MachineTypeAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.MachineTypesScopedList]):
            A list of MachineTypesScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#machineTypeAggregatedList for aggregated lists of
            machine types.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "MachineTypesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="MachineTypesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class MachineTypeList(proto.Message):
    r"""Contains a list of machine types.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.MachineType]):
            A list of MachineType resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#machineTypeList for lists of machine types.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["MachineType"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="MachineType",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class MachineTypesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        machine_types (MutableSequence[google.cloud.compute_v1.types.MachineType]):
            [Output Only] A list of machine types contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] An informational warning that appears when the
            machine types list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    machine_types: MutableSequence["MachineType"] = proto.RepeatedField(
        proto.MESSAGE,
        number=79720065,
        message="MachineType",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ManagedInstance(proto.Message):
    r"""A Managed Instance resource.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        current_action (str):
            [Output Only] The current action that the managed instance
            group has scheduled for the instance. Possible values: -
            NONE The instance is running, and the managed instance group
            does not have any scheduled actions for this instance. -
            CREATING The managed instance group is creating this
            instance. If the group fails to create this instance, it
            will try again until it is successful. -
            CREATING_WITHOUT_RETRIES The managed instance group is
            attempting to create this instance only once. If the group
            fails to create this instance, it does not try again and the
            group's targetSize value is decreased instead. - RECREATING
            The managed instance group is recreating this instance. -
            DELETING The managed instance group is permanently deleting
            this instance. - ABANDONING The managed instance group is
            abandoning this instance. The instance will be removed from
            the instance group and from any target pools that are
            associated with this group. - RESTARTING The managed
            instance group is restarting the instance. - REFRESHING The
            managed instance group is applying configuration changes to
            the instance without stopping it. For example, the group can
            update the target pool list for an instance without stopping
            that instance. - VERIFYING The managed instance group has
            created the instance and it is in the process of being
            verified. Check the CurrentAction enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_current_action``.
        id (int):
            [Output only] The unique identifier for this resource. This
            field is empty when instance does not exist.

            This field is a member of `oneof`_ ``_id``.
        instance (str):
            [Output Only] The URL of the instance. The URL can exist
            even if the instance has not yet been created.

            This field is a member of `oneof`_ ``_instance``.
        instance_health (MutableSequence[google.cloud.compute_v1.types.ManagedInstanceInstanceHealth]):
            [Output Only] Health state of the instance per health-check.
        instance_status (str):
            [Output Only] The status of the instance. This field is
            empty when the instance does not exist. Check the
            InstanceStatus enum for the list of possible values.

            This field is a member of `oneof`_ ``_instance_status``.
        last_attempt (google.cloud.compute_v1.types.ManagedInstanceLastAttempt):
            [Output Only] Information about the last attempt to create
            or delete the instance.

            This field is a member of `oneof`_ ``_last_attempt``.
        preserved_state_from_config (google.cloud.compute_v1.types.PreservedState):
            [Output Only] Preserved state applied from per-instance
            config for this instance.

            This field is a member of `oneof`_ ``_preserved_state_from_config``.
        preserved_state_from_policy (google.cloud.compute_v1.types.PreservedState):
            [Output Only] Preserved state generated based on stateful
            policy for this instance.

            This field is a member of `oneof`_ ``_preserved_state_from_policy``.
        version (google.cloud.compute_v1.types.ManagedInstanceVersion):
            [Output Only] Intended version of this instance.

            This field is a member of `oneof`_ ``_version``.
    """

    class CurrentAction(proto.Enum):
        r"""[Output Only] The current action that the managed instance group has
        scheduled for the instance. Possible values: - NONE The instance is
        running, and the managed instance group does not have any scheduled
        actions for this instance. - CREATING The managed instance group is
        creating this instance. If the group fails to create this instance,
        it will try again until it is successful. - CREATING_WITHOUT_RETRIES
        The managed instance group is attempting to create this instance
        only once. If the group fails to create this instance, it does not
        try again and the group's targetSize value is decreased instead. -
        RECREATING The managed instance group is recreating this instance. -
        DELETING The managed instance group is permanently deleting this
        instance. - ABANDONING The managed instance group is abandoning this
        instance. The instance will be removed from the instance group and
        from any target pools that are associated with this group. -
        RESTARTING The managed instance group is restarting the instance. -
        REFRESHING The managed instance group is applying configuration
        changes to the instance without stopping it. For example, the group
        can update the target pool list for an instance without stopping
        that instance. - VERIFYING The managed instance group has created
        the instance and it is in the process of being verified. Additional
        supported values which may be not listed in the enum directly due to
        technical reasons: STOPPING SUSPENDING

        Values:
            UNDEFINED_CURRENT_ACTION (0):
                A value indicating that the enum field is not
                set.
            ABANDONING (388244813):
                The managed instance group is abandoning this
                instance. The instance will be removed from the
                instance group and from any target pools that
                are associated with this group.
            CREATING (455564985):
                The managed instance group is creating this
                instance. If the group fails to create this
                instance, it will try again until it is
                successful.
            CREATING_WITHOUT_RETRIES (428843785):
                The managed instance group is attempting to
                create this instance only once. If the group
                fails to create this instance, it does not try
                again and the group's targetSize value is
                decreased.
            DELETING (528602024):
                The managed instance group is permanently
                deleting this instance.
            NONE (2402104):
                The managed instance group has not scheduled
                any actions for this instance.
            RECREATING (287278572):
                The managed instance group is recreating this
                instance.
            REFRESHING (163266343):
                The managed instance group is applying
                configuration changes to the instance without
                stopping it. For example, the group can update
                the target pool list for an instance without
                stopping that instance.
            RESTARTING (320534387):
                The managed instance group is restarting this
                instance.
            RESUMING (446856618):
                The managed instance group is resuming this
                instance.
            STARTING (488820800):
                The managed instance group is starting this
                instance.
            VERIFYING (16982185):
                The managed instance group is verifying this
                already created instance. Verification happens
                every time the instance is (re)created or
                restarted and consists of: 1. Waiting until
                health check specified as part of this managed
                instance group's autohealing policy reports
                HEALTHY. Note: Applies only if autohealing
                policy has a health check specified 2. Waiting
                for addition verification steps performed as
                post-instance creation (subject to future
                extensions).
        """
        UNDEFINED_CURRENT_ACTION = 0
        ABANDONING = 388244813
        CREATING = 455564985
        CREATING_WITHOUT_RETRIES = 428843785
        DELETING = 528602024
        NONE = 2402104
        RECREATING = 287278572
        REFRESHING = 163266343
        RESTARTING = 320534387
        RESUMING = 446856618
        STARTING = 488820800
        VERIFYING = 16982185

    class InstanceStatus(proto.Enum):
        r"""[Output Only] The status of the instance. This field is empty when
        the instance does not exist. Additional supported values which may
        be not listed in the enum directly due to technical reasons:
        STOPPING SUSPENDING

        Values:
            UNDEFINED_INSTANCE_STATUS (0):
                A value indicating that the enum field is not
                set.
            DEPROVISIONING (428935662):
                The Nanny is halted and we are performing
                tear down tasks like network deprogramming,
                releasing quota, IP, tearing down disks etc.
            PROVISIONING (290896621):
                Resources are being allocated for the
                instance.
            REPAIRING (413483285):
                The instance is in repair.
            RUNNING (121282975):
                The instance is running.
            STAGING (431072283):
                All required resources have been allocated
                and the instance is being started.
            STOPPED (444276141):
                The instance has stopped successfully.
            STOPPING (350791796):
                No description available.
            SUSPENDED (51223995):
                The instance has suspended.
            SUSPENDING (514206246):
                No description available.
            TERMINATED (250018339):
                The instance has stopped (either by explicit
                action or underlying failure).
        """
        UNDEFINED_INSTANCE_STATUS = 0
        DEPROVISIONING = 428935662
        PROVISIONING = 290896621
        REPAIRING = 413483285
        RUNNING = 121282975
        STAGING = 431072283
        STOPPED = 444276141
        STOPPING = 350791796
        SUSPENDED = 51223995
        SUSPENDING = 514206246
        TERMINATED = 250018339

    current_action: str = proto.Field(
        proto.STRING,
        number=178475964,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
        optional=True,
    )
    instance_health: MutableSequence[
        "ManagedInstanceInstanceHealth"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=382667078,
        message="ManagedInstanceInstanceHealth",
    )
    instance_status: str = proto.Field(
        proto.STRING,
        number=174577372,
        optional=True,
    )
    last_attempt: "ManagedInstanceLastAttempt" = proto.Field(
        proto.MESSAGE,
        number=434771492,
        optional=True,
        message="ManagedInstanceLastAttempt",
    )
    preserved_state_from_config: "PreservedState" = proto.Field(
        proto.MESSAGE,
        number=98661858,
        optional=True,
        message="PreservedState",
    )
    preserved_state_from_policy: "PreservedState" = proto.Field(
        proto.MESSAGE,
        number=470783954,
        optional=True,
        message="PreservedState",
    )
    version: "ManagedInstanceVersion" = proto.Field(
        proto.MESSAGE,
        number=351608024,
        optional=True,
        message="ManagedInstanceVersion",
    )


class ManagedInstanceInstanceHealth(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        detailed_health_state (str):
            [Output Only] The current detailed instance health state.
            Check the DetailedHealthState enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_detailed_health_state``.
        health_check (str):
            [Output Only] The URL for the health check that verifies
            whether the instance is healthy.

            This field is a member of `oneof`_ ``_health_check``.
    """

    class DetailedHealthState(proto.Enum):
        r"""[Output Only] The current detailed instance health state.

        Values:
            UNDEFINED_DETAILED_HEALTH_STATE (0):
                A value indicating that the enum field is not
                set.
            DRAINING (480455402):
                The instance is being drained. The existing
                connections to the instance have time to
                complete, but the new ones are being refused.
            HEALTHY (439801213):
                The instance is reachable i.e. a connection
                to the application health checking endpoint can
                be established, and conforms to the requirements
                defined by the health check.
            TIMEOUT (477813057):
                The instance is unreachable i.e. a connection
                to the application health checking endpoint
                cannot be established, or the server does not
                respond within the specified timeout.
            UNHEALTHY (462118084):
                The instance is reachable, but does not
                conform to the requirements defined by the
                health check.
            UNKNOWN (433141802):
                The health checking system is aware of the
                instance but its health is not known at the
                moment.
        """
        UNDEFINED_DETAILED_HEALTH_STATE = 0
        DRAINING = 480455402
        HEALTHY = 439801213
        TIMEOUT = 477813057
        UNHEALTHY = 462118084
        UNKNOWN = 433141802

    detailed_health_state: str = proto.Field(
        proto.STRING,
        number=510470173,
        optional=True,
    )
    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
        optional=True,
    )


class ManagedInstanceLastAttempt(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        errors (google.cloud.compute_v1.types.Errors):
            [Output Only] Encountered errors during the last attempt to
            create or delete the instance.

            This field is a member of `oneof`_ ``_errors``.
    """

    errors: "Errors" = proto.Field(
        proto.MESSAGE,
        number=315977579,
        optional=True,
        message="Errors",
    )


class ManagedInstanceVersion(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_template (str):
            [Output Only] The intended template of the instance. This
            field is empty when current_action is one of { DELETING,
            ABANDONING }.

            This field is a member of `oneof`_ ``_instance_template``.
        name (str):
            [Output Only] Name of the version.

            This field is a member of `oneof`_ ``_name``.
    """

    instance_template: str = proto.Field(
        proto.STRING,
        number=309248228,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )


class Metadata(proto.Message):
    r"""A metadata key/value entry.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        fingerprint (str):
            Specifies a fingerprint for this request,
            which is essentially a hash of the metadata's
            contents and used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update metadata. You must always provide an
            up-to-date fingerprint hash in order to update
            or change metadata, otherwise the request will
            fail with error 412 conditionNotMet. To see the
            latest fingerprint, make a get() request to
            retrieve the resource.

            This field is a member of `oneof`_ ``_fingerprint``.
        items (MutableSequence[google.cloud.compute_v1.types.Items]):
            Array of key/value pairs. The total size of
            all keys and values must be less than 512 KB.
        kind (str):
            [Output Only] Type of the resource. Always compute#metadata
            for metadata.

            This field is a member of `oneof`_ ``_kind``.
    """

    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    items: MutableSequence["Items"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Items",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )


class MetadataFilter(proto.Message):
    r"""Opaque filter criteria used by load balancers to restrict routing
    configuration to a limited set of load balancing proxies. Proxies
    and sidecars involved in load balancing would typically present
    metadata to the load balancers that need to match criteria specified
    here. If a match takes place, the relevant configuration is made
    available to those proxies. For each metadataFilter in this list, if
    its filterMatchCriteria is set to MATCH_ANY, at least one of the
    filterLabels must match the corresponding label provided in the
    metadata. If its filterMatchCriteria is set to MATCH_ALL, then all
    of its filterLabels must match with corresponding labels provided in
    the metadata. An example for using metadataFilters would be: if load
    balancing involves Envoys, they receive routing configuration when
    values in metadataFilters match values supplied in of their XDS
    requests to loadbalancers.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        filter_labels (MutableSequence[google.cloud.compute_v1.types.MetadataFilterLabelMatch]):
            The list of label value pairs that must match
            labels in the provided metadata based on
            filterMatchCriteria This list must not be empty
            and can have at the most 64 entries.
        filter_match_criteria (str):
            Specifies how individual filter label matches within the
            list of filterLabels and contributes toward the overall
            metadataFilter match. Supported values are: - MATCH_ANY: at
            least one of the filterLabels must have a matching label in
            the provided metadata. - MATCH_ALL: all filterLabels must
            have matching labels in the provided metadata. Check the
            FilterMatchCriteria enum for the list of possible values.

            This field is a member of `oneof`_ ``_filter_match_criteria``.
    """

    class FilterMatchCriteria(proto.Enum):
        r"""Specifies how individual filter label matches within the list of
        filterLabels and contributes toward the overall metadataFilter
        match. Supported values are: - MATCH_ANY: at least one of the
        filterLabels must have a matching label in the provided metadata. -
        MATCH_ALL: all filterLabels must have matching labels in the
        provided metadata.

        Values:
            UNDEFINED_FILTER_MATCH_CRITERIA (0):
                A value indicating that the enum field is not
                set.
            MATCH_ALL (180663271):
                Specifies that all filterLabels must match
                for the metadataFilter to be considered a match.
            MATCH_ANY (180663346):
                Specifies that any filterLabel must match for
                the metadataFilter to be considered a match.
            NOT_SET (163646646):
                Indicates that the match criteria was not
                set. A metadataFilter must never be created with
                this value.
        """
        UNDEFINED_FILTER_MATCH_CRITERIA = 0
        MATCH_ALL = 180663271
        MATCH_ANY = 180663346
        NOT_SET = 163646646

    filter_labels: MutableSequence["MetadataFilterLabelMatch"] = proto.RepeatedField(
        proto.MESSAGE,
        number=307903142,
        message="MetadataFilterLabelMatch",
    )
    filter_match_criteria: str = proto.Field(
        proto.STRING,
        number=239970368,
        optional=True,
    )


class MetadataFilterLabelMatch(proto.Message):
    r"""MetadataFilter label name value pairs that are expected to
    match corresponding labels presented as metadata to the load
    balancer.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            Name of metadata label. The name can have a
            maximum length of 1024 characters and must be at
            least 1 character long.

            This field is a member of `oneof`_ ``_name``.
        value (str):
            The value of the label must match the
            specified value. value can have a maximum length
            of 1024 characters.

            This field is a member of `oneof`_ ``_value``.
    """

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    value: str = proto.Field(
        proto.STRING,
        number=111972721,
        optional=True,
    )


class MoveDiskProjectRequest(proto.Message):
    r"""A request message for Projects.MoveDisk. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk_move_request_resource (google.cloud.compute_v1.types.DiskMoveRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    disk_move_request_resource: "DiskMoveRequest" = proto.Field(
        proto.MESSAGE,
        number=313008458,
        message="DiskMoveRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class MoveFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.Move. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        parent_id (str):
            The new parent of the firewall policy. The ID can be either
            be "folders/[FOLDER_ID]" if the parent is a folder or
            "organizations/[ORGANIZATION_ID]" if the parent is an
            organization.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    parent_id: str = proto.Field(
        proto.STRING,
        number=459714768,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class MoveInstanceProjectRequest(proto.Message):
    r"""A request message for Projects.MoveInstance. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_move_request_resource (google.cloud.compute_v1.types.InstanceMoveRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_move_request_resource: "InstanceMoveRequest" = proto.Field(
        proto.MESSAGE,
        number=311664194,
        message="InstanceMoveRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class NamedPort(proto.Message):
    r"""The named port. For example: <"http", 80>.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            The name for this named port. The name must
            be 1-63 characters long, and comply with
            RFC1035.

            This field is a member of `oneof`_ ``_name``.
        port (int):
            The port number, which can be a value between
            1 and 65535.

            This field is a member of `oneof`_ ``_port``.
    """

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )


class Network(proto.Message):
    r"""Represents a VPC Network resource. Networks connect resources
    to each other and to the internet. For more information, read
    Virtual Private Cloud (VPC) Network.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        I_pv4_range (str):
            Deprecated in favor of subnet mode networks.
            The range of internal addresses that are legal
            on this network. This range is a CIDR
            specification, for example: 192.168.0.0/16.
            Provided by the client when the network is
            created.

            This field is a member of `oneof`_ ``_I_pv4_range``.
        auto_create_subnetworks (bool):
            Must be set to create a VPC network. If not
            set, a legacy network is created. When set to
            true, the VPC network is created in auto mode.
            When set to false, the VPC network is created in
            custom mode. An auto mode VPC network starts
            with one subnet per region. Each subnet has a
            predetermined range as described in Auto mode
            VPC network IP ranges. For custom mode VPC
            networks, you can add subnets using the
            subnetworks insert method.

            This field is a member of `oneof`_ ``_auto_create_subnetworks``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this field when you create the resource.

            This field is a member of `oneof`_ ``_description``.
        enable_ula_internal_ipv6 (bool):
            Enable ULA internal ipv6 on this network.
            Enabling this feature will assign a /48 from
            google defined ULA prefix fd20::/20. .

            This field is a member of `oneof`_ ``_enable_ula_internal_ipv6``.
        firewall_policy (str):
            [Output Only] URL of the firewall policy the network is
            associated with.

            This field is a member of `oneof`_ ``_firewall_policy``.
        gateway_i_pv4 (str):
            [Output Only] The gateway address for default routing out of
            the network, selected by GCP.

            This field is a member of `oneof`_ ``_gateway_i_pv4``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        internal_ipv6_range (str):
            When enabling ula internal ipv6, caller
            optionally can specify the /48 range they want
            from the google defined ULA prefix fd20::/20.
            The input must be a valid /48 ULA IPv6 address
            and must be within the fd20::/20. Operation will
            fail if the speficied /48 is already in used by
            another resource. If the field is not speficied,
            then a /48 range will be randomly allocated from
            fd20::/20 and returned via this field. .

            This field is a member of `oneof`_ ``_internal_ipv6_range``.
        kind (str):
            [Output Only] Type of the resource. Always compute#network
            for networks.

            This field is a member of `oneof`_ ``_kind``.
        mtu (int):
            Maximum Transmission Unit in bytes. The
            minimum value for this field is 1300 and the
            maximum value is 8896. The suggested value is
            1500, which is the default MTU used on the
            Internet, or 8896 if you want to use Jumbo
            frames. If unspecified, the value defaults to
            1460.

            This field is a member of `oneof`_ ``_mtu``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?``. The first character must be
            a lowercase letter, and all following characters (except for
            the last character) must be a dash, lowercase letter, or
            digit. The last character must be a lowercase letter or
            digit.

            This field is a member of `oneof`_ ``_name``.
        network_firewall_policy_enforcement_order (str):
            The network firewall policy enforcement order. Can be either
            AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults
            to AFTER_CLASSIC_FIREWALL if the field is not specified.
            Check the NetworkFirewallPolicyEnforcementOrder enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_network_firewall_policy_enforcement_order``.
        peerings (MutableSequence[google.cloud.compute_v1.types.NetworkPeering]):
            [Output Only] A list of network peerings for the resource.
        routing_config (google.cloud.compute_v1.types.NetworkRoutingConfig):
            The network-level routing configuration for
            this network. Used by Cloud Router to determine
            what type of network-wide routing behavior to
            enforce.

            This field is a member of `oneof`_ ``_routing_config``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        self_link_with_id (str):
            [Output Only] Server-defined URL for this resource with the
            resource id.

            This field is a member of `oneof`_ ``_self_link_with_id``.
        subnetworks (MutableSequence[str]):
            [Output Only] Server-defined fully-qualified URLs for all
            subnetworks in this VPC network.
    """

    class NetworkFirewallPolicyEnforcementOrder(proto.Enum):
        r"""The network firewall policy enforcement order. Can be either
        AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to
        AFTER_CLASSIC_FIREWALL if the field is not specified.

        Values:
            UNDEFINED_NETWORK_FIREWALL_POLICY_ENFORCEMENT_ORDER (0):
                A value indicating that the enum field is not
                set.
            AFTER_CLASSIC_FIREWALL (154582608):
                No description available.
            BEFORE_CLASSIC_FIREWALL (338458349):
                No description available.
        """
        UNDEFINED_NETWORK_FIREWALL_POLICY_ENFORCEMENT_ORDER = 0
        AFTER_CLASSIC_FIREWALL = 154582608
        BEFORE_CLASSIC_FIREWALL = 338458349

    I_pv4_range: str = proto.Field(
        proto.STRING,
        number=59234358,
        optional=True,
    )
    auto_create_subnetworks: bool = proto.Field(
        proto.BOOL,
        number=256156690,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    enable_ula_internal_ipv6: bool = proto.Field(
        proto.BOOL,
        number=423757720,
        optional=True,
    )
    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
        optional=True,
    )
    gateway_i_pv4: str = proto.Field(
        proto.STRING,
        number=178678877,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    internal_ipv6_range: str = proto.Field(
        proto.STRING,
        number=277456807,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    mtu: int = proto.Field(
        proto.INT32,
        number=108462,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network_firewall_policy_enforcement_order: str = proto.Field(
        proto.STRING,
        number=6504784,
        optional=True,
    )
    peerings: MutableSequence["NetworkPeering"] = proto.RepeatedField(
        proto.MESSAGE,
        number=69883187,
        message="NetworkPeering",
    )
    routing_config: "NetworkRoutingConfig" = proto.Field(
        proto.MESSAGE,
        number=523556059,
        optional=True,
        message="NetworkRoutingConfig",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    self_link_with_id: str = proto.Field(
        proto.STRING,
        number=44520962,
        optional=True,
    )
    subnetworks: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=415853125,
    )


class NetworkAttachment(proto.Message):
    r"""NetworkAttachments A network attachment resource ...

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        connection_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkAttachmentConnectedEndpoint]):
            [Output Only] An array of connections for all the producers
            connected to this network attachment.
        connection_preference (str):
            Check the ConnectionPreference enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_connection_preference``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            [Output Only] Fingerprint of this resource. A hash of the
            contents stored in this object. This field is used in
            optimistic locking. An up-to-date fingerprint must be
            provided in order to patch.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource type.
            The server generates this identifier.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            [Output Only] The URL of the network which the Network
            Attachment belongs to.

            This field is a member of `oneof`_ ``_network``.
        producer_accept_lists (MutableSequence[str]):
            Projects that are allowed to connect to this
            network attachment. The project can be specified
            using its id or number.
        producer_reject_lists (MutableSequence[str]):
            Projects that are not allowed to connect to
            this network attachment. The project can be
            specified using its id or number.
        region (str):
            [Output Only] URL of the region where the network attachment
            resides. This field applies only to the region resource. You
            must specify this field as part of the HTTP request URL. It
            is not settable as a field in the request body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        self_link_with_id (str):
            [Output Only] Server-defined URL for this resource's
            resource id.

            This field is a member of `oneof`_ ``_self_link_with_id``.
        subnetworks (MutableSequence[str]):
            An array of URLs where each entry is the URL
            of a subnet provided by the service consumer to
            use for endpoints in the producers that connect
            to this network attachment.
    """

    class ConnectionPreference(proto.Enum):
        r"""

        Values:
            UNDEFINED_CONNECTION_PREFERENCE (0):
                A value indicating that the enum field is not
                set.
            ACCEPT_AUTOMATIC (75250580):
                No description available.
            ACCEPT_MANUAL (373061341):
                No description available.
            INVALID (530283991):
                No description available.
        """
        UNDEFINED_CONNECTION_PREFERENCE = 0
        ACCEPT_AUTOMATIC = 75250580
        ACCEPT_MANUAL = 373061341
        INVALID = 530283991

    connection_endpoints: MutableSequence[
        "NetworkAttachmentConnectedEndpoint"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=326078813,
        message="NetworkAttachmentConnectedEndpoint",
    )
    connection_preference: str = proto.Field(
        proto.STRING,
        number=285818076,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    producer_accept_lists: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=202804523,
    )
    producer_reject_lists: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=4112002,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    self_link_with_id: str = proto.Field(
        proto.STRING,
        number=44520962,
        optional=True,
    )
    subnetworks: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=415853125,
    )


class NetworkAttachmentAggregatedList(proto.Message):
    r"""Contains a list of NetworkAttachmentsScopedList.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.NetworkAttachmentsScopedList]):
            A list of NetworkAttachmentsScopedList
            resources.
        kind (str):

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "NetworkAttachmentsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="NetworkAttachmentsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkAttachmentConnectedEndpoint(proto.Message):
    r"""[Output Only] A connection connected to this network attachment.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ip_address (str):
            The IP address assigned to the producer
            instance network interface. This value will be a
            range in case of Serverless.

            This field is a member of `oneof`_ ``_ip_address``.
        project_id_or_num (str):
            The project id or number of the interface to
            which the IP was assigned.

            This field is a member of `oneof`_ ``_project_id_or_num``.
        secondary_ip_cidr_ranges (MutableSequence[str]):
            Alias IP ranges from the same subnetwork
        status (str):
            The status of a connected endpoint to this
            network attachment. Check the Status enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        subnetwork (str):
            The subnetwork used to assign the IP to the
            producer instance network interface.

            This field is a member of `oneof`_ ``_subnetwork``.
    """

    class Status(proto.Enum):
        r"""The status of a connected endpoint to this network
        attachment.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            ACCEPTED (246714279):
                The consumer allows traffic from the producer
                to reach its VPC.
            CLOSED (380163436):
                The consumer network attachment no longer
                exists.
            NEEDS_ATTENTION (344491452):
                The consumer needs to take further action
                before traffic can be served.
            PENDING (35394935):
                The consumer neither allows nor prohibits
                traffic from the producer to reach its VPC.
            REJECTED (174130302):
                The consumer prohibits traffic from the
                producer to reach its VPC.
            STATUS_UNSPECIFIED (42133066):
                No description available.
        """
        UNDEFINED_STATUS = 0
        ACCEPTED = 246714279
        CLOSED = 380163436
        NEEDS_ATTENTION = 344491452
        PENDING = 35394935
        REJECTED = 174130302
        STATUS_UNSPECIFIED = 42133066

    ip_address: str = proto.Field(
        proto.STRING,
        number=406272220,
        optional=True,
    )
    project_id_or_num: str = proto.Field(
        proto.STRING,
        number=349783336,
        optional=True,
    )
    secondary_ip_cidr_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=117184788,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
        optional=True,
    )


class NetworkAttachmentList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.NetworkAttachment]):
            A list of NetworkAttachment resources.
        kind (str):

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["NetworkAttachment"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="NetworkAttachment",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkAttachmentsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_attachments (MutableSequence[google.cloud.compute_v1.types.NetworkAttachment]):
            A list of NetworkAttachments contained in
            this scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of network attachments when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    network_attachments: MutableSequence["NetworkAttachment"] = proto.RepeatedField(
        proto.MESSAGE,
        number=521514783,
        message="NetworkAttachment",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkEdgeSecurityService(proto.Message):
    r"""Represents a Google Cloud Armor network edge security service
    resource.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a
            NetworkEdgeSecurityService. An up-to-date
            fingerprint must be provided in order to update
            the NetworkEdgeSecurityService, otherwise the
            request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve a
            NetworkEdgeSecurityService.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output only] Type of the resource. Always
            compute#networkEdgeSecurityService for
            NetworkEdgeSecurityServices

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        region (str):
            [Output Only] URL of the region where the resource resides.
            You must specify this field as part of the HTTP request URL.
            It is not settable as a field in the request body.

            This field is a member of `oneof`_ ``_region``.
        security_policy (str):
            The resource URL for the network edge
            security service associated with this network
            edge security service.

            This field is a member of `oneof`_ ``_security_policy``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        self_link_with_id (str):
            [Output Only] Server-defined URL for this resource with the
            resource id.

            This field is a member of `oneof`_ ``_self_link_with_id``.
    """

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    self_link_with_id: str = proto.Field(
        proto.STRING,
        number=44520962,
        optional=True,
    )


class NetworkEdgeSecurityServiceAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        etag (str):

            This field is a member of `oneof`_ ``_etag``.
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.NetworkEdgeSecurityServicesScopedList]):
            A list of
            NetworkEdgeSecurityServicesScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#networkEdgeSecurityServiceAggregatedList for lists
            of Network Edge Security Services.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[
        str, "NetworkEdgeSecurityServicesScopedList"
    ] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="NetworkEdgeSecurityServicesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkEdgeSecurityServicesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_edge_security_services (MutableSequence[google.cloud.compute_v1.types.NetworkEdgeSecurityService]):
            A list of NetworkEdgeSecurityServices
            contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of security policies when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    network_edge_security_services: MutableSequence[
        "NetworkEdgeSecurityService"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=35530156,
        message="NetworkEdgeSecurityService",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkEndpoint(proto.Message):
    r"""The network endpoint.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        annotations (MutableMapping[str, str]):
            Metadata defined as annotations on the
            network endpoint.
        fqdn (str):
            Optional fully qualified domain name of network endpoint.
            This can only be specified when
            NetworkEndpointGroup.network_endpoint_type is
            NON_GCP_FQDN_PORT.

            This field is a member of `oneof`_ ``_fqdn``.
        instance (str):
            The name for a specific VM instance that the IP address
            belongs to. This is required for network endpoints of type
            GCE_VM_IP_PORT. The instance must be in the same zone of
            network endpoint group. The name must be 1-63 characters
            long, and comply with RFC1035.

            This field is a member of `oneof`_ ``_instance``.
        ip_address (str):
            Optional IPv4 address of network endpoint.
            The IP address must belong to a VM in Compute
            Engine (either the primary IP or as part of an
            aliased IP range). If the IP address is not
            specified, then the primary IP address for the
            VM instance in the network that the network
            endpoint group belongs to will be used.

            This field is a member of `oneof`_ ``_ip_address``.
        port (int):
            Optional port number of network endpoint. If
            not specified, the defaultPort for the network
            endpoint group will be used.

            This field is a member of `oneof`_ ``_port``.
    """

    annotations: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=112032548,
    )
    fqdn: str = proto.Field(
        proto.STRING,
        number=3150485,
        optional=True,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
        optional=True,
    )
    ip_address: str = proto.Field(
        proto.STRING,
        number=406272220,
        optional=True,
    )
    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )


class NetworkEndpointGroup(proto.Message):
    r"""Represents a collection of network endpoints. A network
    endpoint group (NEG) defines how a set of endpoints should be
    reached, whether they are reachable, and where they are located.
    For more information about using NEGs, see Setting up external
    HTTP(S) Load Balancing with internet NEGs, Setting up zonal
    NEGs, or Setting up external HTTP(S) Load Balancing with
    serverless NEGs.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        annotations (MutableMapping[str, str]):
            Metadata defined as annotations on the
            network endpoint group.
        app_engine (google.cloud.compute_v1.types.NetworkEndpointGroupAppEngine):
            Only valid when networkEndpointType is
            "SERVERLESS". Only one of cloudRun, appEngine or
            cloudFunction may be set.

            This field is a member of `oneof`_ ``_app_engine``.
        cloud_function (google.cloud.compute_v1.types.NetworkEndpointGroupCloudFunction):
            Only valid when networkEndpointType is
            "SERVERLESS". Only one of cloudRun, appEngine or
            cloudFunction may be set.

            This field is a member of `oneof`_ ``_cloud_function``.
        cloud_run (google.cloud.compute_v1.types.NetworkEndpointGroupCloudRun):
            Only valid when networkEndpointType is
            "SERVERLESS". Only one of cloudRun, appEngine or
            cloudFunction may be set.

            This field is a member of `oneof`_ ``_cloud_run``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        default_port (int):
            The default port used if the port number is
            not specified in the network endpoint.

            This field is a member of `oneof`_ ``_default_port``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#networkEndpointGroup for network endpoint group.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource; provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            The URL of the network to which all network
            endpoints in the NEG belong. Uses "default"
            project network if unspecified.

            This field is a member of `oneof`_ ``_network``.
        network_endpoint_type (str):
            Type of network endpoints in this network endpoint group.
            Can be one of GCE_VM_IP, GCE_VM_IP_PORT,
            NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT,
            INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT. Check
            the NetworkEndpointType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_network_endpoint_type``.
        psc_data (google.cloud.compute_v1.types.NetworkEndpointGroupPscData):

            This field is a member of `oneof`_ ``_psc_data``.
        psc_target_service (str):
            The target service url used to set up private
            service connection to a Google API or a PSC
            Producer Service Attachment. An example value
            is: "asia-northeast3-cloudkms.googleapis.com".

            This field is a member of `oneof`_ ``_psc_target_service``.
        region (str):
            [Output Only] The URL of the region where the network
            endpoint group is located.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        size (int):
            [Output only] Number of network endpoints in the network
            endpoint group.

            This field is a member of `oneof`_ ``_size``.
        subnetwork (str):
            Optional URL of the subnetwork to which all
            network endpoints in the NEG belong.

            This field is a member of `oneof`_ ``_subnetwork``.
        zone (str):
            [Output Only] The URL of the zone where the network endpoint
            group is located.

            This field is a member of `oneof`_ ``_zone``.
    """

    class NetworkEndpointType(proto.Enum):
        r"""Type of network endpoints in this network endpoint group. Can be one
        of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT,
        INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS,
        PRIVATE_SERVICE_CONNECT.

        Values:
            UNDEFINED_NETWORK_ENDPOINT_TYPE (0):
                A value indicating that the enum field is not
                set.
            GCE_VM_IP (401880793):
                The network endpoint is represented by an IP
                address.
            GCE_VM_IP_PORT (501838375):
                The network endpoint is represented by IP
                address and port pair.
            INTERNET_FQDN_PORT (404154477):
                The network endpoint is represented by fully
                qualified domain name and port.
            INTERNET_IP_PORT (477719963):
                The network endpoint is represented by an
                internet IP address and port.
            NON_GCP_PRIVATE_IP_PORT (336447968):
                The network endpoint is represented by an IP
                address and port. The endpoint belongs to a VM
                or pod running in a customer's on-premises.
            PRIVATE_SERVICE_CONNECT (48134724):
                The network endpoint is either public Google
                APIs or services exposed by other GCP Project
                with a Service Attachment. The connection is set
                up by private service connect
            SERVERLESS (270492508):
                The network endpoint is handled by specified
                serverless infrastructure.
        """
        UNDEFINED_NETWORK_ENDPOINT_TYPE = 0
        GCE_VM_IP = 401880793
        GCE_VM_IP_PORT = 501838375
        INTERNET_FQDN_PORT = 404154477
        INTERNET_IP_PORT = 477719963
        NON_GCP_PRIVATE_IP_PORT = 336447968
        PRIVATE_SERVICE_CONNECT = 48134724
        SERVERLESS = 270492508

    annotations: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=112032548,
    )
    app_engine: "NetworkEndpointGroupAppEngine" = proto.Field(
        proto.MESSAGE,
        number=340788768,
        optional=True,
        message="NetworkEndpointGroupAppEngine",
    )
    cloud_function: "NetworkEndpointGroupCloudFunction" = proto.Field(
        proto.MESSAGE,
        number=519893666,
        optional=True,
        message="NetworkEndpointGroupCloudFunction",
    )
    cloud_run: "NetworkEndpointGroupCloudRun" = proto.Field(
        proto.MESSAGE,
        number=111060353,
        optional=True,
        message="NetworkEndpointGroupCloudRun",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    default_port: int = proto.Field(
        proto.INT32,
        number=423377855,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    network_endpoint_type: str = proto.Field(
        proto.STRING,
        number=118301523,
        optional=True,
    )
    psc_data: "NetworkEndpointGroupPscData" = proto.Field(
        proto.MESSAGE,
        number=71937481,
        optional=True,
        message="NetworkEndpointGroupPscData",
    )
    psc_target_service: str = proto.Field(
        proto.STRING,
        number=269132134,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    size: int = proto.Field(
        proto.INT32,
        number=3530753,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class NetworkEndpointGroupAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.NetworkEndpointGroupsScopedList]):
            A list of NetworkEndpointGroupsScopedList
            resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#networkEndpointGroupAggregatedList for aggregated
            lists of network endpoint groups.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "NetworkEndpointGroupsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="NetworkEndpointGroupsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkEndpointGroupAppEngine(proto.Message):
    r"""Configuration for an App Engine network endpoint group (NEG).
    The service is optional, may be provided explicitly or in the
    URL mask. The version is optional and can only be provided
    explicitly or in the URL mask when service is present. Note: App
    Engine service must be in the same project and located in the
    same region as the Serverless NEG.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        service (str):
            Optional serving service. The service name is
            case-sensitive and must be 1-63 characters long.
            Example value: "default", "my-service".

            This field is a member of `oneof`_ ``_service``.
        url_mask (str):
            A template to parse service and version
            fields from a request URL. URL mask allows for
            routing to multiple App Engine services without
            having to create multiple Network Endpoint
            Groups and backend services. For example, the
            request URLs "foo1-dot-appname.appspot.com/v1"
            and "foo1-dot-appname.appspot.com/v2" can be
            backed by the same Serverless NEG with URL mask
            "<service>-dot-appname.appspot.com/<version>".
            The URL mask will parse them to { service =
            "foo1", version = "v1" } and { service = "foo1",
            version = "v2" } respectively.

            This field is a member of `oneof`_ ``_url_mask``.
        version (str):
            Optional serving version. The version name is
            case-sensitive and must be 1-100 characters
            long. Example value: "v1", "v2".

            This field is a member of `oneof`_ ``_version``.
    """

    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )
    url_mask: str = proto.Field(
        proto.STRING,
        number=103352252,
        optional=True,
    )
    version: str = proto.Field(
        proto.STRING,
        number=351608024,
        optional=True,
    )


class NetworkEndpointGroupCloudFunction(proto.Message):
    r"""Configuration for a Cloud Function network endpoint group
    (NEG). The function must be provided explicitly or in the URL
    mask. Note: Cloud Function must be in the same project and
    located in the same region as the Serverless NEG.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        function (str):
            A user-defined name of the Cloud Function.
            The function name is case-sensitive and must be
            1-63 characters long. Example value: "func1".

            This field is a member of `oneof`_ ``_function``.
        url_mask (str):
            A template to parse function field from a
            request URL. URL mask allows for routing to
            multiple Cloud Functions without having to
            create multiple Network Endpoint Groups and
            backend services. For example, request URLs "
            mydomain.com/function1" and
            "mydomain.com/function2" can be backed by the
            same Serverless NEG with URL mask "/<function>".
            The URL mask will parse them to { function =
            "function1" } and { function = "function2" }
            respectively.

            This field is a member of `oneof`_ ``_url_mask``.
    """

    function: str = proto.Field(
        proto.STRING,
        number=307196888,
        optional=True,
    )
    url_mask: str = proto.Field(
        proto.STRING,
        number=103352252,
        optional=True,
    )


class NetworkEndpointGroupCloudRun(proto.Message):
    r"""Configuration for a Cloud Run network endpoint group (NEG).
    The service must be provided explicitly or in the URL mask. The
    tag is optional, may be provided explicitly or in the URL mask.
    Note: Cloud Run service must be in the same project and located
    in the same region as the Serverless NEG.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        service (str):
            Cloud Run service is the main resource of
            Cloud Run. The service must be 1-63 characters
            long, and comply with RFC1035. Example value:
            "run-service".

            This field is a member of `oneof`_ ``_service``.
        tag (str):
            Optional Cloud Run tag represents the
            "named-revision" to provide additional
            fine-grained traffic routing information. The
            tag must be 1-63 characters long, and comply
            with RFC1035. Example value: "revision-0010".

            This field is a member of `oneof`_ ``_tag``.
        url_mask (str):
            A template to parse <service> and <tag>
            fields from a request URL. URL mask allows for
            routing to multiple Run services without having
            to create multiple network endpoint groups and
            backend services. For example, request URLs
            "foo1.domain.com/bar1" and
            "foo1.domain.com/bar2" can be backed by the same
            Serverless Network Endpoint Group (NEG) with URL
            mask "<tag>.domain.com/<service>". The URL mask
            will parse them to { service="bar1", tag="foo1"
            } and { service="bar2", tag="foo2" }
            respectively.

            This field is a member of `oneof`_ ``_url_mask``.
    """

    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )
    tag: str = proto.Field(
        proto.STRING,
        number=114586,
        optional=True,
    )
    url_mask: str = proto.Field(
        proto.STRING,
        number=103352252,
        optional=True,
    )


class NetworkEndpointGroupList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.NetworkEndpointGroup]):
            A list of NetworkEndpointGroup resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#networkEndpointGroupList for network endpoint group
            lists.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["NetworkEndpointGroup"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="NetworkEndpointGroup",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkEndpointGroupPscData(proto.Message):
    r"""All data that is specifically relevant to only network endpoint
    groups of type PRIVATE_SERVICE_CONNECT.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        consumer_psc_address (str):
            [Output Only] Address allocated from given subnetwork for
            PSC. This IP address acts as a VIP for a PSC NEG, allowing
            it to act as an endpoint in L7 PSC-XLB.

            This field is a member of `oneof`_ ``_consumer_psc_address``.
        psc_connection_id (int):
            [Output Only] The PSC connection id of the PSC Network
            Endpoint Group Consumer.

            This field is a member of `oneof`_ ``_psc_connection_id``.
        psc_connection_status (str):
            [Output Only] The connection status of the PSC Forwarding
            Rule. Check the PscConnectionStatus enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_psc_connection_status``.
    """

    class PscConnectionStatus(proto.Enum):
        r"""[Output Only] The connection status of the PSC Forwarding Rule.

        Values:
            UNDEFINED_PSC_CONNECTION_STATUS (0):
                A value indicating that the enum field is not
                set.
            ACCEPTED (246714279):
                The connection has been accepted by the
                producer.
            CLOSED (380163436):
                The connection has been closed by the
                producer and will not serve traffic going
                forward.
            NEEDS_ATTENTION (344491452):
                The connection has been accepted by the
                producer, but the producer needs to take further
                action before the forwarding rule can serve
                traffic.
            PENDING (35394935):
                The connection is pending acceptance by the
                producer.
            REJECTED (174130302):
                The connection has been rejected by the
                producer.
            STATUS_UNSPECIFIED (42133066):
                No description available.
        """
        UNDEFINED_PSC_CONNECTION_STATUS = 0
        ACCEPTED = 246714279
        CLOSED = 380163436
        NEEDS_ATTENTION = 344491452
        PENDING = 35394935
        REJECTED = 174130302
        STATUS_UNSPECIFIED = 42133066

    consumer_psc_address: str = proto.Field(
        proto.STRING,
        number=452646572,
        optional=True,
    )
    psc_connection_id: int = proto.Field(
        proto.UINT64,
        number=292082397,
        optional=True,
    )
    psc_connection_status: str = proto.Field(
        proto.STRING,
        number=184149172,
        optional=True,
    )


class NetworkEndpointGroupsAttachEndpointsRequest(proto.Message):
    r"""

    Attributes:
        network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]):
            The list of network endpoints to be attached.
    """

    network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField(
        proto.MESSAGE,
        number=149850285,
        message="NetworkEndpoint",
    )


class NetworkEndpointGroupsDetachEndpointsRequest(proto.Message):
    r"""

    Attributes:
        network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]):
            The list of network endpoints to be detached.
    """

    network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField(
        proto.MESSAGE,
        number=149850285,
        message="NetworkEndpoint",
    )


class NetworkEndpointGroupsListEndpointsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_status (str):
            Optional query parameter for showing the
            health status of each network endpoint. Valid
            options are SKIP or SHOW. If you don't specify
            this parameter, the health status of network
            endpoints will not be provided. Check the
            HealthStatus enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_health_status``.
    """

    class HealthStatus(proto.Enum):
        r"""Optional query parameter for showing the health status of
        each network endpoint. Valid options are SKIP or SHOW. If you
        don't specify this parameter, the health status of network
        endpoints will not be provided.

        Values:
            UNDEFINED_HEALTH_STATUS (0):
                A value indicating that the enum field is not
                set.
            SHOW (2544381):
                Show the health status for each network
                endpoint. Impacts latency of the call.
            SKIP (2547071):
                Health status for network endpoints will not
                be provided.
        """
        UNDEFINED_HEALTH_STATUS = 0
        SHOW = 2544381
        SKIP = 2547071

    health_status: str = proto.Field(
        proto.STRING,
        number=380545845,
        optional=True,
    )


class NetworkEndpointGroupsListNetworkEndpoints(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.NetworkEndpointWithHealthStatus]):
            A list of NetworkEndpointWithHealthStatus
            resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#networkEndpointGroupsListNetworkEndpoints for the
            list of network endpoints in the specified network endpoint
            group.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["NetworkEndpointWithHealthStatus"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="NetworkEndpointWithHealthStatus",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkEndpointGroupsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_endpoint_groups (MutableSequence[google.cloud.compute_v1.types.NetworkEndpointGroup]):
            [Output Only] The list of network endpoint groups that are
            contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] An informational warning that replaces the
            list of network endpoint groups when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    network_endpoint_groups: MutableSequence[
        "NetworkEndpointGroup"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=29346733,
        message="NetworkEndpointGroup",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkEndpointWithHealthStatus(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        healths (MutableSequence[google.cloud.compute_v1.types.HealthStatusForNetworkEndpoint]):
            [Output only] The health status of network endpoint;
        network_endpoint (google.cloud.compute_v1.types.NetworkEndpoint):
            [Output only] The network endpoint;

            This field is a member of `oneof`_ ``_network_endpoint``.
    """

    healths: MutableSequence["HealthStatusForNetworkEndpoint"] = proto.RepeatedField(
        proto.MESSAGE,
        number=258689431,
        message="HealthStatusForNetworkEndpoint",
    )
    network_endpoint: "NetworkEndpoint" = proto.Field(
        proto.MESSAGE,
        number=56789126,
        optional=True,
        message="NetworkEndpoint",
    )


class NetworkInterface(proto.Message):
    r"""A network interface resource attached to an instance.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        access_configs (MutableSequence[google.cloud.compute_v1.types.AccessConfig]):
            An array of configurations for this interface. Currently,
            only one access config, ONE_TO_ONE_NAT, is supported. If
            there are no accessConfigs specified, then this instance
            will have no external internet access.
        alias_ip_ranges (MutableSequence[google.cloud.compute_v1.types.AliasIpRange]):
            An array of alias IP ranges for this network
            interface. You can only specify this field for
            network interfaces in VPC networks.
        fingerprint (str):
            Fingerprint hash of contents stored in this
            network interface. This field will be ignored
            when inserting an Instance or adding a
            NetworkInterface. An up-to-date fingerprint must
            be provided in order to update the
            NetworkInterface. The request will fail with
            error 400 Bad Request if the fingerprint is not
            provided, or 412 Precondition Failed if the
            fingerprint is out of date.

            This field is a member of `oneof`_ ``_fingerprint``.
        internal_ipv6_prefix_length (int):
            The prefix length of the primary internal
            IPv6 range.

            This field is a member of `oneof`_ ``_internal_ipv6_prefix_length``.
        ipv6_access_configs (MutableSequence[google.cloud.compute_v1.types.AccessConfig]):
            An array of IPv6 access configurations for this interface.
            Currently, only one IPv6 access config, DIRECT_IPV6, is
            supported. If there is no ipv6AccessConfig specified, then
            this instance will have no external IPv6 Internet access.
        ipv6_access_type (str):
            [Output Only] One of EXTERNAL, INTERNAL to indicate whether
            the IP can be accessed from the Internet. This field is
            always inherited from its subnetwork. Valid only if
            stackType is IPV4_IPV6. Check the Ipv6AccessType enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_ipv6_access_type``.
        ipv6_address (str):
            An IPv6 internal network address for this
            network interface. To use a static internal IP
            address, it must be unused and in the same
            region as the instance's zone. If not specified,
            Google Cloud will automatically assign an
            internal IPv6 address from the instance's
            subnetwork.

            This field is a member of `oneof`_ ``_ipv6_address``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#networkInterface for network interfaces.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            [Output Only] The name of the network interface, which is
            generated by the server. For a VM, the network interface
            uses the nicN naming format. Where N is a value between 0
            and 7. The default interface value is nic0.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            URL of the VPC network resource for this
            instance. When creating an instance, if neither
            the network nor the subnetwork is specified, the
            default network global/networks/default is used.
            If the selected project doesn't have the default
            network, you must specify a network or subnet.
            If the network is not specified but the
            subnetwork is specified, the network is
            inferred. If you specify this property, you can
            specify the network as a full or partial URL.
            For example, the following are all valid URLs: -
            https://www.googleapis.com/compute/v1/projects/project/global/networks/
            network -
            projects/project/global/networks/network -
            global/networks/default

            This field is a member of `oneof`_ ``_network``.
        network_attachment (str):
            The URL of the network attachment that this interface should
            connect to in the following format:
            projects/{project_number}/regions/{region_name}/networkAttachments/{network_attachment_name}.

            This field is a member of `oneof`_ ``_network_attachment``.
        network_i_p (str):
            An IPv4 internal IP address to assign to the
            instance for this network interface. If not
            specified by the user, an unused internal IP is
            assigned by the system.

            This field is a member of `oneof`_ ``_network_i_p``.
        nic_type (str):
            The type of vNIC to be used on this
            interface. This may be gVNIC or VirtioNet. Check
            the NicType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_nic_type``.
        queue_count (int):
            The networking queue count that's specified
            by users for the network interface. Both Rx and
            Tx queues will be set to this number. It'll be
            empty if not specified by the users.

            This field is a member of `oneof`_ ``_queue_count``.
        stack_type (str):
            The stack type for this network interface to identify
            whether the IPv6 feature is enabled or not. If not
            specified, IPV4_ONLY will be used. This field can be both
            set at instance creation and update network interface
            operations. Check the StackType enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_stack_type``.
        subnetwork (str):
            The URL of the Subnetwork resource for this
            instance. If the network resource is in legacy
            mode, do not specify this field. If the network
            is in auto subnet mode, specifying the
            subnetwork is optional. If the network is in
            custom subnet mode, specifying the subnetwork is
            required. If you specify this field, you can
            specify the subnetwork as a full or partial URL.
            For example, the following are all valid URLs: -
            https://www.googleapis.com/compute/v1/projects/project/regions/region
            /subnetworks/subnetwork -
            regions/region/subnetworks/subnetwork

            This field is a member of `oneof`_ ``_subnetwork``.
    """

    class Ipv6AccessType(proto.Enum):
        r"""[Output Only] One of EXTERNAL, INTERNAL to indicate whether the IP
        can be accessed from the Internet. This field is always inherited
        from its subnetwork. Valid only if stackType is IPV4_IPV6.

        Values:
            UNDEFINED_IPV6_ACCESS_TYPE (0):
                A value indicating that the enum field is not
                set.
            EXTERNAL (35607499):
                This network interface can have external
                IPv6.
            INTERNAL (279295677):
                This network interface can have internal
                IPv6.
            UNSPECIFIED_IPV6_ACCESS_TYPE (313080613):
                No description available.
        """
        UNDEFINED_IPV6_ACCESS_TYPE = 0
        EXTERNAL = 35607499
        INTERNAL = 279295677
        UNSPECIFIED_IPV6_ACCESS_TYPE = 313080613

    class NicType(proto.Enum):
        r"""The type of vNIC to be used on this interface. This may be
        gVNIC or VirtioNet.

        Values:
            UNDEFINED_NIC_TYPE (0):
                A value indicating that the enum field is not
                set.
            GVNIC (68209305):
                GVNIC
            UNSPECIFIED_NIC_TYPE (67411801):
                No type specified.
            VIRTIO_NET (452123481):
                VIRTIO
        """
        UNDEFINED_NIC_TYPE = 0
        GVNIC = 68209305
        UNSPECIFIED_NIC_TYPE = 67411801
        VIRTIO_NET = 452123481

    class StackType(proto.Enum):
        r"""The stack type for this network interface to identify whether the
        IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be
        used. This field can be both set at instance creation and update
        network interface operations.

        Values:
            UNDEFINED_STACK_TYPE (0):
                A value indicating that the enum field is not
                set.
            IPV4_IPV6 (22197249):
                The network interface can have both IPv4 and
                IPv6 addresses.
            IPV4_ONLY (22373798):
                The network interface will be assigned IPv4
                address.
            UNSPECIFIED_STACK_TYPE (298084569):
                No description available.
        """
        UNDEFINED_STACK_TYPE = 0
        IPV4_IPV6 = 22197249
        IPV4_ONLY = 22373798
        UNSPECIFIED_STACK_TYPE = 298084569

    access_configs: MutableSequence["AccessConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=111058326,
        message="AccessConfig",
    )
    alias_ip_ranges: MutableSequence["AliasIpRange"] = proto.RepeatedField(
        proto.MESSAGE,
        number=165085631,
        message="AliasIpRange",
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    internal_ipv6_prefix_length: int = proto.Field(
        proto.INT32,
        number=203833757,
        optional=True,
    )
    ipv6_access_configs: MutableSequence["AccessConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=483472110,
        message="AccessConfig",
    )
    ipv6_access_type: str = proto.Field(
        proto.STRING,
        number=504658653,
        optional=True,
    )
    ipv6_address: str = proto.Field(
        proto.STRING,
        number=341563804,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    network_attachment: str = proto.Field(
        proto.STRING,
        number=224644052,
        optional=True,
    )
    network_i_p: str = proto.Field(
        proto.STRING,
        number=207181961,
        optional=True,
    )
    nic_type: str = proto.Field(
        proto.STRING,
        number=59810577,
        optional=True,
    )
    queue_count: int = proto.Field(
        proto.INT32,
        number=503708769,
        optional=True,
    )
    stack_type: str = proto.Field(
        proto.STRING,
        number=425908881,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
        optional=True,
    )


class NetworkList(proto.Message):
    r"""Contains a list of networks.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Network]):
            A list of Network resources.
        kind (str):
            [Output Only] Type of resource. Always compute#networkList
            for lists of networks.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Network"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Network",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NetworkPeering(proto.Message):
    r"""A network peering attached to a network resource. The message
    includes the peering name, peer network, peering state, and a
    flag indicating whether Google Compute Engine should
    automatically create routes for the peering.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_create_routes (bool):
            This field will be deprecated soon. Use the
            exchange_subnet_routes field instead. Indicates whether full
            mesh connectivity is created and managed automatically
            between peered networks. Currently this field should always
            be true since Google Compute Engine will automatically
            create and manage subnetwork routes between two networks
            when peering state is ACTIVE.

            This field is a member of `oneof`_ ``_auto_create_routes``.
        exchange_subnet_routes (bool):
            Indicates whether full mesh connectivity is
            created and managed automatically between peered
            networks. Currently this field should always be
            true since Google Compute Engine will
            automatically create and manage subnetwork
            routes between two networks when peering state
            is ACTIVE.

            This field is a member of `oneof`_ ``_exchange_subnet_routes``.
        export_custom_routes (bool):
            Whether to export the custom routes to peer
            network. The default value is false.

            This field is a member of `oneof`_ ``_export_custom_routes``.
        export_subnet_routes_with_public_ip (bool):
            Whether subnet routes with public IP range
            are exported. The default value is true, all
            subnet routes are exported. IPv4 special-use
            ranges are always exported to peers and are not
            controlled by this field.

            This field is a member of `oneof`_ ``_export_subnet_routes_with_public_ip``.
        import_custom_routes (bool):
            Whether to import the custom routes from peer
            network. The default value is false.

            This field is a member of `oneof`_ ``_import_custom_routes``.
        import_subnet_routes_with_public_ip (bool):
            Whether subnet routes with public IP range
            are imported. The default value is false. IPv4
            special-use ranges are always imported from
            peers and are not controlled by this field.

            This field is a member of `oneof`_ ``_import_subnet_routes_with_public_ip``.
        name (str):
            Name of this peering. Provided by the client when the
            peering is created. The name must comply with RFC1035.
            Specifically, the name must be 1-63 characters long and
            match regular expression ``[a-z]([-a-z0-9]*[a-z0-9])?``. The
            first character must be a lowercase letter, and all the
            following characters must be a dash, lowercase letter, or
            digit, except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            The URL of the peer network. It can be either
            full URL or partial URL. The peer network may
            belong to a different project. If the partial
            URL does not contain project, it is assumed that
            the peer network is in the same project as the
            current network.

            This field is a member of `oneof`_ ``_network``.
        peer_mtu (int):
            Maximum Transmission Unit in bytes.

            This field is a member of `oneof`_ ``_peer_mtu``.
        stack_type (str):
            Which IP version(s) of traffic and routes are allowed to be
            imported or exported between peer networks. The default
            value is IPV4_ONLY. Check the StackType enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_stack_type``.
        state (str):
            [Output Only] State for the peering, either ``ACTIVE`` or
            ``INACTIVE``. The peering is ``ACTIVE`` when there's a
            matching configuration in the peer network. Check the State
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_state``.
        state_details (str):
            [Output Only] Details about the current state of the
            peering.

            This field is a member of `oneof`_ ``_state_details``.
    """

    class StackType(proto.Enum):
        r"""Which IP version(s) of traffic and routes are allowed to be imported
        or exported between peer networks. The default value is IPV4_ONLY.

        Values:
            UNDEFINED_STACK_TYPE (0):
                A value indicating that the enum field is not
                set.
            IPV4_IPV6 (22197249):
                This Peering will allow IPv4 traffic and routes to be
                exchanged. Additionally if the matching peering is
                IPV4_IPV6, IPv6 traffic and routes will be exchanged as
                well.
            IPV4_ONLY (22373798):
                This Peering will only allow IPv4 traffic and routes to be
                exchanged, even if the matching peering is IPV4_IPV6.
        """
        UNDEFINED_STACK_TYPE = 0
        IPV4_IPV6 = 22197249
        IPV4_ONLY = 22373798

    class State(proto.Enum):
        r"""[Output Only] State for the peering, either ``ACTIVE`` or
        ``INACTIVE``. The peering is ``ACTIVE`` when there's a matching
        configuration in the peer network.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                Matching configuration exists on the peer.
            INACTIVE (270421099):
                There is no matching configuration on the
                peer, including the case when peer does not
                exist.
        """
        UNDEFINED_STATE = 0
        ACTIVE = 314733318
        INACTIVE = 270421099

    auto_create_routes: bool = proto.Field(
        proto.BOOL,
        number=57454941,
        optional=True,
    )
    exchange_subnet_routes: bool = proto.Field(
        proto.BOOL,
        number=26322256,
        optional=True,
    )
    export_custom_routes: bool = proto.Field(
        proto.BOOL,
        number=60281485,
        optional=True,
    )
    export_subnet_routes_with_public_ip: bool = proto.Field(
        proto.BOOL,
        number=97940834,
        optional=True,
    )
    import_custom_routes: bool = proto.Field(
        proto.BOOL,
        number=197982398,
        optional=True,
    )
    import_subnet_routes_with_public_ip: bool = proto.Field(
        proto.BOOL,
        number=14419729,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    peer_mtu: int = proto.Field(
        proto.INT32,
        number=69584721,
        optional=True,
    )
    stack_type: str = proto.Field(
        proto.STRING,
        number=425908881,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )
    state_details: str = proto.Field(
        proto.STRING,
        number=95566996,
        optional=True,
    )


class NetworkPerformanceConfig(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        total_egress_bandwidth_tier (str):
            Check the TotalEgressBandwidthTier enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_total_egress_bandwidth_tier``.
    """

    class TotalEgressBandwidthTier(proto.Enum):
        r"""

        Values:
            UNDEFINED_TOTAL_EGRESS_BANDWIDTH_TIER (0):
                A value indicating that the enum field is not
                set.
            DEFAULT (115302945):
                No description available.
            TIER_1 (326919444):
                No description available.
        """
        UNDEFINED_TOTAL_EGRESS_BANDWIDTH_TIER = 0
        DEFAULT = 115302945
        TIER_1 = 326919444

    total_egress_bandwidth_tier: str = proto.Field(
        proto.STRING,
        number=130109439,
        optional=True,
    )


class NetworkRoutingConfig(proto.Message):
    r"""A routing configuration attached to a network resource. The
    message includes the list of routers associated with the
    network, and a flag indicating the type of routing behavior to
    enforce network-wide.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        routing_mode (str):
            The network-wide routing mode to use. If set
            to REGIONAL, this network's Cloud Routers will
            only advertise routes with subnets of this
            network in the same region as the router. If set
            to GLOBAL, this network's Cloud Routers will
            advertise routes with all subnets of this
            network, across regions. Check the RoutingMode
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_routing_mode``.
    """

    class RoutingMode(proto.Enum):
        r"""The network-wide routing mode to use. If set to REGIONAL,
        this network's Cloud Routers will only advertise routes with
        subnets of this network in the same region as the router. If set
        to GLOBAL, this network's Cloud Routers will advertise routes
        with all subnets of this network, across regions.

        Values:
            UNDEFINED_ROUTING_MODE (0):
                A value indicating that the enum field is not
                set.
            GLOBAL (494663587):
                No description available.
            REGIONAL (92288543):
                No description available.
        """
        UNDEFINED_ROUTING_MODE = 0
        GLOBAL = 494663587
        REGIONAL = 92288543

    routing_mode: str = proto.Field(
        proto.STRING,
        number=475143548,
        optional=True,
    )


class NetworksAddPeeringRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_create_routes (bool):
            This field will be deprecated soon. Use
            exchange_subnet_routes in network_peering instead. Indicates
            whether full mesh connectivity is created and managed
            automatically between peered networks. Currently this field
            should always be true since Google Compute Engine will
            automatically create and manage subnetwork routes between
            two networks when peering state is ACTIVE.

            This field is a member of `oneof`_ ``_auto_create_routes``.
        name (str):
            Name of the peering, which should conform to
            RFC1035.

            This field is a member of `oneof`_ ``_name``.
        network_peering (google.cloud.compute_v1.types.NetworkPeering):
            Network peering parameters. In order to specify route
            policies for peering using import and export custom routes,
            you must specify all peering related parameters (name, peer
            network, exchange_subnet_routes) in the network_peering
            field. The corresponding fields in NetworksAddPeeringRequest
            will be deprecated soon.

            This field is a member of `oneof`_ ``_network_peering``.
        peer_network (str):
            URL of the peer network. It can be either
            full URL or partial URL. The peer network may
            belong to a different project. If the partial
            URL does not contain project, it is assumed that
            the peer network is in the same project as the
            current network.

            This field is a member of `oneof`_ ``_peer_network``.
    """

    auto_create_routes: bool = proto.Field(
        proto.BOOL,
        number=57454941,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network_peering: "NetworkPeering" = proto.Field(
        proto.MESSAGE,
        number=328926767,
        optional=True,
        message="NetworkPeering",
    )
    peer_network: str = proto.Field(
        proto.STRING,
        number=500625489,
        optional=True,
    )


class NetworksGetEffectiveFirewallsResponse(proto.Message):
    r"""

    Attributes:
        firewall_policys (MutableSequence[google.cloud.compute_v1.types.NetworksGetEffectiveFirewallsResponseEffectiveFirewallPolicy]):
            Effective firewalls from firewall policy.
        firewalls (MutableSequence[google.cloud.compute_v1.types.Firewall]):
            Effective firewalls on the network.
    """

    firewall_policys: MutableSequence[
        "NetworksGetEffectiveFirewallsResponseEffectiveFirewallPolicy"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=410985794,
        message="NetworksGetEffectiveFirewallsResponseEffectiveFirewallPolicy",
    )
    firewalls: MutableSequence["Firewall"] = proto.RepeatedField(
        proto.MESSAGE,
        number=272245619,
        message="Firewall",
    )


class NetworksGetEffectiveFirewallsResponseEffectiveFirewallPolicy(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        display_name (str):
            [Output Only] Deprecated, please use short name instead. The
            display name of the firewall policy.

            This field is a member of `oneof`_ ``_display_name``.
        name (str):
            [Output Only] The name of the firewall policy.

            This field is a member of `oneof`_ ``_name``.
        rules (MutableSequence[google.cloud.compute_v1.types.FirewallPolicyRule]):
            The rules that apply to the network.
        short_name (str):
            [Output Only] The short name of the firewall policy.

            This field is a member of `oneof`_ ``_short_name``.
        type_ (str):
            [Output Only] The type of the firewall policy. Check the
            Type enum for the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""[Output Only] The type of the firewall policy.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            HIERARCHY (69902869):
                No description available.
            NETWORK (413984270):
                No description available.
            UNSPECIFIED (526786327):
                No description available.
        """
        UNDEFINED_TYPE = 0
        HIERARCHY = 69902869
        NETWORK = 413984270
        UNSPECIFIED = 526786327

    display_name: str = proto.Field(
        proto.STRING,
        number=4473832,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    rules: MutableSequence["FirewallPolicyRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=108873975,
        message="FirewallPolicyRule",
    )
    short_name: str = proto.Field(
        proto.STRING,
        number=492051566,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class NetworksRemovePeeringRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            Name of the peering, which should conform to
            RFC1035.

            This field is a member of `oneof`_ ``_name``.
    """

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )


class NetworksUpdatePeeringRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_peering (google.cloud.compute_v1.types.NetworkPeering):

            This field is a member of `oneof`_ ``_network_peering``.
    """

    network_peering: "NetworkPeering" = proto.Field(
        proto.MESSAGE,
        number=328926767,
        optional=True,
        message="NetworkPeering",
    )


class NodeGroup(proto.Message):
    r"""Represents a sole-tenant Node Group resource. A sole-tenant
    node is a physical server that is dedicated to hosting VM
    instances only for your specific project. Use sole-tenant nodes
    to keep your instances physically separated from instances in
    other projects, or to group your instances together on the same
    host hardware. For more information, read Sole-tenant nodes.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaling_policy (google.cloud.compute_v1.types.NodeGroupAutoscalingPolicy):
            Specifies how autoscaling should behave.

            This field is a member of `oneof`_ ``_autoscaling_policy``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] The type of the resource. Always
            compute#nodeGroup for node group.

            This field is a member of `oneof`_ ``_kind``.
        location_hint (str):
            An opaque location hint used to place the Node close to
            other resources. This field is for use by internal tools
            that use the public API. The location hint here on the
            NodeGroup overrides any location_hint present in the
            NodeTemplate.

            This field is a member of `oneof`_ ``_location_hint``.
        maintenance_policy (str):
            Specifies how to handle instances when a node in the group
            undergoes maintenance. Set to one of: DEFAULT,
            RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default
            value is DEFAULT. For more information, see Maintenance
            policies. Check the MaintenancePolicy enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_maintenance_policy``.
        maintenance_window (google.cloud.compute_v1.types.NodeGroupMaintenanceWindow):

            This field is a member of `oneof`_ ``_maintenance_window``.
        name (str):
            The name of the resource, provided by the client when
            initially creating the resource. The resource name must be
            1-63 characters long, and comply with RFC1035. Specifically,
            the name must be 1-63 characters long and match the regular
            expression ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the
            first character must be a lowercase letter, and all
            following characters must be a dash, lowercase letter, or
            digit, except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        node_template (str):
            URL of the node template to create the node
            group from.

            This field is a member of `oneof`_ ``_node_template``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        share_settings (google.cloud.compute_v1.types.ShareSettings):
            Share-settings for the node group

            This field is a member of `oneof`_ ``_share_settings``.
        size (int):
            [Output Only] The total number of nodes in the node group.

            This field is a member of `oneof`_ ``_size``.
        status (str):
            Check the Status enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_status``.
        zone (str):
            [Output Only] The name of the zone where the node group
            resides, such as us-central1-a.

            This field is a member of `oneof`_ ``_zone``.
    """

    class MaintenancePolicy(proto.Enum):
        r"""Specifies how to handle instances when a node in the group undergoes
        maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or
        MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more
        information, see Maintenance policies.

        Values:
            UNDEFINED_MAINTENANCE_POLICY (0):
                A value indicating that the enum field is not
                set.
            DEFAULT (115302945):
                Allow the node and corresponding instances to
                retain default maintenance behavior.
            MAINTENANCE_POLICY_UNSPECIFIED (72964182):
                No description available.
            MIGRATE_WITHIN_NODE_GROUP (153483394):
                When maintenance must be done on a node, the
                instances on that node will be moved to other
                nodes in the group. Instances with
                onHostMaintenance = MIGRATE will live migrate to
                their destinations while instances with
                onHostMaintenance = TERMINATE will terminate and
                then restart on their destination nodes if
                automaticRestart = true.
            RESTART_IN_PLACE (228647325):
                Instances in this group will restart on the
                same node when maintenance has completed.
                Instances must have onHostMaintenance =
                TERMINATE, and they will only restart if
                automaticRestart = true.
        """
        UNDEFINED_MAINTENANCE_POLICY = 0
        DEFAULT = 115302945
        MAINTENANCE_POLICY_UNSPECIFIED = 72964182
        MIGRATE_WITHIN_NODE_GROUP = 153483394
        RESTART_IN_PLACE = 228647325

    class Status(proto.Enum):
        r"""

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            CREATING (455564985):
                No description available.
            DELETING (528602024):
                No description available.
            INVALID (530283991):
                No description available.
            READY (77848963):
                No description available.
        """
        UNDEFINED_STATUS = 0
        CREATING = 455564985
        DELETING = 528602024
        INVALID = 530283991
        READY = 77848963

    autoscaling_policy: "NodeGroupAutoscalingPolicy" = proto.Field(
        proto.MESSAGE,
        number=221950041,
        optional=True,
        message="NodeGroupAutoscalingPolicy",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    location_hint: str = proto.Field(
        proto.STRING,
        number=350519505,
        optional=True,
    )
    maintenance_policy: str = proto.Field(
        proto.STRING,
        number=528327646,
        optional=True,
    )
    maintenance_window: "NodeGroupMaintenanceWindow" = proto.Field(
        proto.MESSAGE,
        number=186374812,
        optional=True,
        message="NodeGroupMaintenanceWindow",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    node_template: str = proto.Field(
        proto.STRING,
        number=323154455,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    share_settings: "ShareSettings" = proto.Field(
        proto.MESSAGE,
        number=266668163,
        optional=True,
        message="ShareSettings",
    )
    size: int = proto.Field(
        proto.INT32,
        number=3530753,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class NodeGroupAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.NodeGroupsScopedList]):
            A list of NodeGroupsScopedList resources.
        kind (str):
            [Output Only] Type of resource.Always
            compute#nodeGroupAggregatedList for aggregated lists of node
            groups.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "NodeGroupsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="NodeGroupsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NodeGroupAutoscalingPolicy(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        max_nodes (int):
            The maximum number of nodes that the group
            should have. Must be set if autoscaling is
            enabled. Maximum value allowed is 100.

            This field is a member of `oneof`_ ``_max_nodes``.
        min_nodes (int):
            The minimum number of nodes that the group
            should have.

            This field is a member of `oneof`_ ``_min_nodes``.
        mode (str):
            The autoscaling mode. Set to one of: ON, OFF, or
            ONLY_SCALE_OUT. For more information, see Autoscaler modes.
            Check the Mode enum for the list of possible values.

            This field is a member of `oneof`_ ``_mode``.
    """

    class Mode(proto.Enum):
        r"""The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For
        more information, see Autoscaler modes.

        Values:
            UNDEFINED_MODE (0):
                A value indicating that the enum field is not
                set.
            MODE_UNSPECIFIED (371348091):
                No description available.
            OFF (78159):
                Autoscaling is disabled.
            ON (2527):
                Autocaling is fully enabled.
            ONLY_SCALE_OUT (152713670):
                Autoscaling will only scale out and will not
                remove nodes.
        """
        UNDEFINED_MODE = 0
        MODE_UNSPECIFIED = 371348091
        OFF = 78159
        ON = 2527
        ONLY_SCALE_OUT = 152713670

    max_nodes: int = proto.Field(
        proto.INT32,
        number=297762838,
        optional=True,
    )
    min_nodes: int = proto.Field(
        proto.INT32,
        number=533370500,
        optional=True,
    )
    mode: str = proto.Field(
        proto.STRING,
        number=3357091,
        optional=True,
    )


class NodeGroupList(proto.Message):
    r"""Contains a list of nodeGroups.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.NodeGroup]):
            A list of NodeGroup resources.
        kind (str):
            [Output Only] Type of resource.Always compute#nodeGroupList
            for lists of node groups.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["NodeGroup"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="NodeGroup",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NodeGroupMaintenanceWindow(proto.Message):
    r"""Time window specified for daily maintenance operations. GCE's
    internal maintenance will be performed within this window.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        maintenance_duration (google.cloud.compute_v1.types.Duration):
            [Output only] A predetermined duration for the window,
            automatically chosen to be the smallest possible in the
            given scenario.

            This field is a member of `oneof`_ ``_maintenance_duration``.
        start_time (str):
            Start time of the window. This must be in UTC
            format that resolves to one of 00:00, 04:00,
            08:00, 12:00, 16:00, or 20:00. For example, both
            13:00-5 and 08:00 are valid.

            This field is a member of `oneof`_ ``_start_time``.
    """

    maintenance_duration: "Duration" = proto.Field(
        proto.MESSAGE,
        number=525291840,
        optional=True,
        message="Duration",
    )
    start_time: str = proto.Field(
        proto.STRING,
        number=37467274,
        optional=True,
    )


class NodeGroupNode(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        accelerators (MutableSequence[google.cloud.compute_v1.types.AcceleratorConfig]):
            Accelerators for this node.
        consumed_resources (google.cloud.compute_v1.types.InstanceConsumptionInfo):
            Node resources that are reserved by all
            instances.

            This field is a member of `oneof`_ ``_consumed_resources``.
        cpu_overcommit_type (str):
            CPU overcommit.
            Check the CpuOvercommitType enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_cpu_overcommit_type``.
        disks (MutableSequence[google.cloud.compute_v1.types.LocalDisk]):
            Local disk configurations.
        instance_consumption_data (MutableSequence[google.cloud.compute_v1.types.InstanceConsumptionData]):
            Instance data that shows consumed resources
            on the node.
        instances (MutableSequence[str]):
            Instances scheduled on this node.
        name (str):
            The name of the node.

            This field is a member of `oneof`_ ``_name``.
        node_type (str):
            The type of this node.

            This field is a member of `oneof`_ ``_node_type``.
        satisfies_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_satisfies_pzs``.
        server_binding (google.cloud.compute_v1.types.ServerBinding):
            Binding properties for the physical server.

            This field is a member of `oneof`_ ``_server_binding``.
        server_id (str):
            Server ID associated with this node.

            This field is a member of `oneof`_ ``_server_id``.
        status (str):
            Check the Status enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_status``.
        total_resources (google.cloud.compute_v1.types.InstanceConsumptionInfo):
            Total amount of available resources on the
            node.

            This field is a member of `oneof`_ ``_total_resources``.
    """

    class CpuOvercommitType(proto.Enum):
        r"""CPU overcommit.

        Values:
            UNDEFINED_CPU_OVERCOMMIT_TYPE (0):
                A value indicating that the enum field is not
                set.
            CPU_OVERCOMMIT_TYPE_UNSPECIFIED (520665615):
                No description available.
            ENABLED (182130465):
                No description available.
            NONE (2402104):
                No description available.
        """
        UNDEFINED_CPU_OVERCOMMIT_TYPE = 0
        CPU_OVERCOMMIT_TYPE_UNSPECIFIED = 520665615
        ENABLED = 182130465
        NONE = 2402104

    class Status(proto.Enum):
        r"""

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            CREATING (455564985):
                No description available.
            DELETING (528602024):
                No description available.
            INVALID (530283991):
                No description available.
            READY (77848963):
                No description available.
            REPAIRING (413483285):
                No description available.
        """
        UNDEFINED_STATUS = 0
        CREATING = 455564985
        DELETING = 528602024
        INVALID = 530283991
        READY = 77848963
        REPAIRING = 413483285

    accelerators: MutableSequence["AcceleratorConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=269577064,
        message="AcceleratorConfig",
    )
    consumed_resources: "InstanceConsumptionInfo" = proto.Field(
        proto.MESSAGE,
        number=334527118,
        optional=True,
        message="InstanceConsumptionInfo",
    )
    cpu_overcommit_type: str = proto.Field(
        proto.STRING,
        number=247727959,
        optional=True,
    )
    disks: MutableSequence["LocalDisk"] = proto.RepeatedField(
        proto.MESSAGE,
        number=95594102,
        message="LocalDisk",
    )
    instance_consumption_data: MutableSequence[
        "InstanceConsumptionData"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=84715576,
        message="InstanceConsumptionData",
    )
    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    node_type: str = proto.Field(
        proto.STRING,
        number=465832791,
        optional=True,
    )
    satisfies_pzs: bool = proto.Field(
        proto.BOOL,
        number=480964267,
        optional=True,
    )
    server_binding: "ServerBinding" = proto.Field(
        proto.MESSAGE,
        number=208179593,
        optional=True,
        message="ServerBinding",
    )
    server_id: str = proto.Field(
        proto.STRING,
        number=339433367,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    total_resources: "InstanceConsumptionInfo" = proto.Field(
        proto.MESSAGE,
        number=97406698,
        optional=True,
        message="InstanceConsumptionInfo",
    )


class NodeGroupsAddNodesRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        additional_node_count (int):
            Count of additional nodes to be added to the
            node group.

            This field is a member of `oneof`_ ``_additional_node_count``.
    """

    additional_node_count: int = proto.Field(
        proto.INT32,
        number=134997930,
        optional=True,
    )


class NodeGroupsDeleteNodesRequest(proto.Message):
    r"""

    Attributes:
        nodes (MutableSequence[str]):
            Names of the nodes to delete.
    """

    nodes: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=104993457,
    )


class NodeGroupsListNodes(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.NodeGroupNode]):
            A list of Node resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute.nodeGroupsListNodes for the list of nodes in the
            specified node group.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["NodeGroupNode"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="NodeGroupNode",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NodeGroupsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_groups (MutableSequence[google.cloud.compute_v1.types.NodeGroup]):
            [Output Only] A list of node groups contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] An informational warning that appears when the
            nodeGroup list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    node_groups: MutableSequence["NodeGroup"] = proto.RepeatedField(
        proto.MESSAGE,
        number=73188017,
        message="NodeGroup",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NodeGroupsSetNodeTemplateRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_template (str):
            Full or partial URL of the node template
            resource to be updated for this node group.

            This field is a member of `oneof`_ ``_node_template``.
    """

    node_template: str = proto.Field(
        proto.STRING,
        number=323154455,
        optional=True,
    )


class NodeGroupsSimulateMaintenanceEventRequest(proto.Message):
    r"""

    Attributes:
        nodes (MutableSequence[str]):
            Names of the nodes to go under maintenance
            simulation.
    """

    nodes: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=104993457,
    )


class NodeTemplate(proto.Message):
    r"""Represent a sole-tenant Node Template resource. You can use a
    template to define properties for nodes in a node group. For
    more information, read Creating node groups and instances.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        accelerators (MutableSequence[google.cloud.compute_v1.types.AcceleratorConfig]):

        cpu_overcommit_type (str):
            CPU overcommit.
            Check the CpuOvercommitType enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_cpu_overcommit_type``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        disks (MutableSequence[google.cloud.compute_v1.types.LocalDisk]):

        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] The type of the resource. Always
            compute#nodeTemplate for node templates.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            The name of the resource, provided by the client when
            initially creating the resource. The resource name must be
            1-63 characters long, and comply with RFC1035. Specifically,
            the name must be 1-63 characters long and match the regular
            expression ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the
            first character must be a lowercase letter, and all
            following characters must be a dash, lowercase letter, or
            digit, except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        node_affinity_labels (MutableMapping[str, str]):
            Labels to use for node affinity, which will
            be used in instance scheduling.
        node_type (str):
            The node type to use for nodes group that are
            created from this template.

            This field is a member of `oneof`_ ``_node_type``.
        node_type_flexibility (google.cloud.compute_v1.types.NodeTemplateNodeTypeFlexibility):
            Do not use. Instead, use the node_type property.

            This field is a member of `oneof`_ ``_node_type_flexibility``.
        region (str):
            [Output Only] The name of the region where the node template
            resides, such as us-central1.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        server_binding (google.cloud.compute_v1.types.ServerBinding):
            Sets the binding properties for the physical server. Valid
            values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER:
            Restarts VMs on any available physical server -
            RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same
            physical server whenever possible See Sole-tenant node
            options for more information.

            This field is a member of `oneof`_ ``_server_binding``.
        status (str):
            [Output Only] The status of the node template. One of the
            following values: CREATING, READY, and DELETING. Check the
            Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        status_message (str):
            [Output Only] An optional, human-readable explanation of the
            status.

            This field is a member of `oneof`_ ``_status_message``.
    """

    class CpuOvercommitType(proto.Enum):
        r"""CPU overcommit.

        Values:
            UNDEFINED_CPU_OVERCOMMIT_TYPE (0):
                A value indicating that the enum field is not
                set.
            CPU_OVERCOMMIT_TYPE_UNSPECIFIED (520665615):
                No description available.
            ENABLED (182130465):
                No description available.
            NONE (2402104):
                No description available.
        """
        UNDEFINED_CPU_OVERCOMMIT_TYPE = 0
        CPU_OVERCOMMIT_TYPE_UNSPECIFIED = 520665615
        ENABLED = 182130465
        NONE = 2402104

    class Status(proto.Enum):
        r"""[Output Only] The status of the node template. One of the following
        values: CREATING, READY, and DELETING.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            CREATING (455564985):
                Resources are being allocated.
            DELETING (528602024):
                The node template is currently being deleted.
            INVALID (530283991):
                Invalid status.
            READY (77848963):
                The node template is ready.
        """
        UNDEFINED_STATUS = 0
        CREATING = 455564985
        DELETING = 528602024
        INVALID = 530283991
        READY = 77848963

    accelerators: MutableSequence["AcceleratorConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=269577064,
        message="AcceleratorConfig",
    )
    cpu_overcommit_type: str = proto.Field(
        proto.STRING,
        number=247727959,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    disks: MutableSequence["LocalDisk"] = proto.RepeatedField(
        proto.MESSAGE,
        number=95594102,
        message="LocalDisk",
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    node_affinity_labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=339007161,
    )
    node_type: str = proto.Field(
        proto.STRING,
        number=465832791,
        optional=True,
    )
    node_type_flexibility: "NodeTemplateNodeTypeFlexibility" = proto.Field(
        proto.MESSAGE,
        number=315257905,
        optional=True,
        message="NodeTemplateNodeTypeFlexibility",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    server_binding: "ServerBinding" = proto.Field(
        proto.MESSAGE,
        number=208179593,
        optional=True,
        message="ServerBinding",
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    status_message: str = proto.Field(
        proto.STRING,
        number=297428154,
        optional=True,
    )


class NodeTemplateAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.NodeTemplatesScopedList]):
            A list of NodeTemplatesScopedList resources.
        kind (str):
            [Output Only] Type of resource.Always
            compute#nodeTemplateAggregatedList for aggregated lists of
            node templates.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "NodeTemplatesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="NodeTemplatesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NodeTemplateList(proto.Message):
    r"""Contains a list of node templates.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.NodeTemplate]):
            A list of NodeTemplate resources.
        kind (str):
            [Output Only] Type of resource.Always
            compute#nodeTemplateList for lists of node templates.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["NodeTemplate"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="NodeTemplate",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NodeTemplateNodeTypeFlexibility(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        cpus (str):

            This field is a member of `oneof`_ ``_cpus``.
        local_ssd (str):

            This field is a member of `oneof`_ ``_local_ssd``.
        memory (str):

            This field is a member of `oneof`_ ``_memory``.
    """

    cpus: str = proto.Field(
        proto.STRING,
        number=3060683,
        optional=True,
    )
    local_ssd: str = proto.Field(
        proto.STRING,
        number=405741360,
        optional=True,
    )
    memory: str = proto.Field(
        proto.STRING,
        number=532856065,
        optional=True,
    )


class NodeTemplatesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_templates (MutableSequence[google.cloud.compute_v1.types.NodeTemplate]):
            [Output Only] A list of node templates contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] An informational warning that appears when the
            node templates list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    node_templates: MutableSequence["NodeTemplate"] = proto.RepeatedField(
        proto.MESSAGE,
        number=354111804,
        message="NodeTemplate",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NodeType(proto.Message):
    r"""Represent a sole-tenant Node Type resource. Each node within
    a node group must have a node type. A node type specifies the
    total amount of cores and memory for that node. Currently, the
    only available node type is n1-node-96-624 node type that has 96
    vCPUs and 624 GB of memory, available in multiple zones. For
    more information read Node types.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        cpu_platform (str):
            [Output Only] The CPU platform used by this node type.

            This field is a member of `oneof`_ ``_cpu_platform``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        deprecated (google.cloud.compute_v1.types.DeprecationStatus):
            [Output Only] The deprecation status associated with this
            node type.

            This field is a member of `oneof`_ ``_deprecated``.
        description (str):
            [Output Only] An optional textual description of the
            resource.

            This field is a member of `oneof`_ ``_description``.
        guest_cpus (int):
            [Output Only] The number of virtual CPUs that are available
            to the node type.

            This field is a member of `oneof`_ ``_guest_cpus``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] The type of the resource. Always
            compute#nodeType for node types.

            This field is a member of `oneof`_ ``_kind``.
        local_ssd_gb (int):
            [Output Only] Local SSD available to the node type, defined
            in GB.

            This field is a member of `oneof`_ ``_local_ssd_gb``.
        memory_mb (int):
            [Output Only] The amount of physical memory available to the
            node type, defined in MB.

            This field is a member of `oneof`_ ``_memory_mb``.
        name (str):
            [Output Only] Name of the resource.

            This field is a member of `oneof`_ ``_name``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        zone (str):
            [Output Only] The name of the zone where the node type
            resides, such as us-central1-a.

            This field is a member of `oneof`_ ``_zone``.
    """

    cpu_platform: str = proto.Field(
        proto.STRING,
        number=410285354,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    deprecated: "DeprecationStatus" = proto.Field(
        proto.MESSAGE,
        number=515138995,
        optional=True,
        message="DeprecationStatus",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    guest_cpus: int = proto.Field(
        proto.INT32,
        number=393356754,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    local_ssd_gb: int = proto.Field(
        proto.INT32,
        number=329237578,
        optional=True,
    )
    memory_mb: int = proto.Field(
        proto.INT32,
        number=116001171,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class NodeTypeAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.NodeTypesScopedList]):
            A list of NodeTypesScopedList resources.
        kind (str):
            [Output Only] Type of resource.Always
            compute#nodeTypeAggregatedList for aggregated lists of node
            types.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "NodeTypesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="NodeTypesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NodeTypeList(proto.Message):
    r"""Contains a list of node types.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.NodeType]):
            A list of NodeType resources.
        kind (str):
            [Output Only] Type of resource.Always compute#nodeTypeList
            for lists of node types.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["NodeType"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="NodeType",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NodeTypesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_types (MutableSequence[google.cloud.compute_v1.types.NodeType]):
            [Output Only] A list of node types contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] An informational warning that appears when the
            node types list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    node_types: MutableSequence["NodeType"] = proto.RepeatedField(
        proto.MESSAGE,
        number=482172924,
        message="NodeType",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class NotificationEndpoint(proto.Message):
    r"""Represents a notification endpoint. A notification endpoint
    resource defines an endpoint to receive notifications when there
    are status changes detected by the associated health check
    service. For more information, see Health checks overview.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        grpc_settings (google.cloud.compute_v1.types.NotificationEndpointGrpcSettings):
            Settings of the gRPC notification endpoint
            including the endpoint URL and the retry
            duration.

            This field is a member of `oneof`_ ``_grpc_settings``.
        id (int):
            [Output Only] A unique identifier for this resource type.
            The server generates this identifier.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#notificationEndpoint for notification endpoints.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        region (str):
            [Output Only] URL of the region where the notification
            endpoint resides. This field applies only to the regional
            resource. You must specify this field as part of the HTTP
            request URL. It is not settable as a field in the request
            body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
    """

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    grpc_settings: "NotificationEndpointGrpcSettings" = proto.Field(
        proto.MESSAGE,
        number=456139556,
        optional=True,
        message="NotificationEndpointGrpcSettings",
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )


class NotificationEndpointGrpcSettings(proto.Message):
    r"""Represents a gRPC setting that describes one gRPC
    notification endpoint and the retry duration attempting to send
    notification to this endpoint.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        authority (str):
            Optional. If specified, this field is used to
            set the authority header by the sender of
            notifications. See
            https://tools.ietf.org/html/rfc7540#section-8.1.2.3

            This field is a member of `oneof`_ ``_authority``.
        endpoint (str):
            Endpoint to which gRPC notifications are
            sent. This must be a valid gRPCLB DNS name.

            This field is a member of `oneof`_ ``_endpoint``.
        payload_name (str):
            Optional. If specified, this field is used to
            populate the "name" field in gRPC requests.

            This field is a member of `oneof`_ ``_payload_name``.
        resend_interval (google.cloud.compute_v1.types.Duration):
            Optional. This field is used to configure how
            often to send a full update of all non-healthy
            backends. If unspecified, full updates are not
            sent. If specified, must be in the range between
            600 seconds to 3600 seconds. Nanos are
            disallowed. Can only be set for regional
            notification endpoints.

            This field is a member of `oneof`_ ``_resend_interval``.
        retry_duration_sec (int):
            How much time (in seconds) is spent
            attempting notification retries until a
            successful response is received. Default is 30s.
            Limit is 20m (1200s). Must be a positive number.

            This field is a member of `oneof`_ ``_retry_duration_sec``.
    """

    authority: str = proto.Field(
        proto.STRING,
        number=401868611,
        optional=True,
    )
    endpoint: str = proto.Field(
        proto.STRING,
        number=130489749,
        optional=True,
    )
    payload_name: str = proto.Field(
        proto.STRING,
        number=300358300,
        optional=True,
    )
    resend_interval: "Duration" = proto.Field(
        proto.MESSAGE,
        number=478288969,
        optional=True,
        message="Duration",
    )
    retry_duration_sec: int = proto.Field(
        proto.UINT32,
        number=115681117,
        optional=True,
    )


class NotificationEndpointList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.NotificationEndpoint]):
            A list of NotificationEndpoint resources.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#notificationEndpoint for notification endpoints.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["NotificationEndpoint"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="NotificationEndpoint",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class Operation(proto.Message):
    r"""Represents an Operation resource. Google Compute Engine has three
    Operation resources: \*
    `Global </compute/docs/reference/rest/v1/globalOperations>`__ \*
    `Regional </compute/docs/reference/rest/v1/regionOperations>`__ \*
    `Zonal </compute/docs/reference/rest/v1/zoneOperations>`__ You can
    use an operation resource to manage asynchronous API requests. For
    more information, read Handling API responses. Operations can be
    global, regional or zonal. - For global operations, use the
    ``globalOperations`` resource. - For regional operations, use the
    ``regionOperations`` resource. - For zonal operations, use the
    ``zonalOperations`` resource. For more information, read Global,
    Regional, and Zonal Resources.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        client_operation_id (str):
            [Output Only] The value of ``requestId`` if you provided it
            in the request. Not present otherwise.

            This field is a member of `oneof`_ ``_client_operation_id``.
        creation_timestamp (str):
            [Deprecated] This field is deprecated.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            [Output Only] A textual description of the operation, which
            is set when the operation is created.

            This field is a member of `oneof`_ ``_description``.
        end_time (str):
            [Output Only] The time that this operation was completed.
            This value is in RFC3339 text format.

            This field is a member of `oneof`_ ``_end_time``.
        error (google.cloud.compute_v1.types.Error):
            [Output Only] If errors are generated during processing of
            the operation, this field will be populated.

            This field is a member of `oneof`_ ``_error``.
        http_error_message (str):
            [Output Only] If the operation fails, this field contains
            the HTTP error message that was returned, such as
            ``NOT FOUND``.

            This field is a member of `oneof`_ ``_http_error_message``.
        http_error_status_code (int):
            [Output Only] If the operation fails, this field contains
            the HTTP error status code that was returned. For example, a
            ``404`` means the resource was not found.

            This field is a member of `oneof`_ ``_http_error_status_code``.
        id (int):
            [Output Only] The unique identifier for the operation. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        insert_time (str):
            [Output Only] The time that this operation was requested.
            This value is in RFC3339 text format.

            This field is a member of `oneof`_ ``_insert_time``.
        kind (str):
            [Output Only] Type of the resource. Always
            ``compute#operation`` for Operation resources.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            [Output Only] Name of the operation.

            This field is a member of `oneof`_ ``_name``.
        operation_group_id (str):
            [Output Only] An ID that represents a group of operations,
            such as when a group of operations results from a
            ``bulkInsert`` API request.

            This field is a member of `oneof`_ ``_operation_group_id``.
        operation_type (str):
            [Output Only] The type of operation, such as ``insert``,
            ``update``, or ``delete``, and so on.

            This field is a member of `oneof`_ ``_operation_type``.
        progress (int):
            [Output Only] An optional progress indicator that ranges
            from 0 to 100. There is no requirement that this be linear
            or support any granularity of operations. This should not be
            used to guess when the operation will be complete. This
            number should monotonically increase as the operation
            progresses.

            This field is a member of `oneof`_ ``_progress``.
        region (str):
            [Output Only] The URL of the region where the operation
            resides. Only applicable when performing regional
            operations.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        start_time (str):
            [Output Only] The time that this operation was started by
            the server. This value is in RFC3339 text format.

            This field is a member of `oneof`_ ``_start_time``.
        status (google.cloud.compute_v1.types.Operation.Status):
            [Output Only] The status of the operation, which can be one
            of the following: ``PENDING``, ``RUNNING``, or ``DONE``.

            This field is a member of `oneof`_ ``_status``.
        status_message (str):
            [Output Only] An optional textual description of the current
            status of the operation.

            This field is a member of `oneof`_ ``_status_message``.
        target_id (int):
            [Output Only] The unique target ID, which identifies a
            specific incarnation of the target resource.

            This field is a member of `oneof`_ ``_target_id``.
        target_link (str):
            [Output Only] The URL of the resource that the operation
            modifies. For operations related to creating a snapshot,
            this points to the persistent disk that the snapshot was
            created from.

            This field is a member of `oneof`_ ``_target_link``.
        user (str):
            [Output Only] User who requested the operation, for example:
            ``user@example.com``.

            This field is a member of `oneof`_ ``_user``.
        warnings (MutableSequence[google.cloud.compute_v1.types.Warnings]):
            [Output Only] If warning messages are generated during
            processing of the operation, this field will be populated.
        zone (str):
            [Output Only] The URL of the zone where the operation
            resides. Only applicable when performing per-zone
            operations.

            This field is a member of `oneof`_ ``_zone``.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of the operation, which can be one of the
        following: ``PENDING``, ``RUNNING``, or ``DONE``.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            DONE (2104194):
                No description available.
            PENDING (35394935):
                No description available.
            RUNNING (121282975):
                No description available.
        """
        UNDEFINED_STATUS = 0
        DONE = 2104194
        PENDING = 35394935
        RUNNING = 121282975

    client_operation_id: str = proto.Field(
        proto.STRING,
        number=297240295,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    end_time: str = proto.Field(
        proto.STRING,
        number=114938801,
        optional=True,
    )
    error: "Error" = proto.Field(
        proto.MESSAGE,
        number=96784904,
        optional=True,
        message="Error",
    )
    http_error_message: str = proto.Field(
        proto.STRING,
        number=202521945,
        optional=True,
    )
    http_error_status_code: int = proto.Field(
        proto.INT32,
        number=312345196,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    insert_time: str = proto.Field(
        proto.STRING,
        number=433722515,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    operation_group_id: str = proto.Field(
        proto.STRING,
        number=40171187,
        optional=True,
    )
    operation_type: str = proto.Field(
        proto.STRING,
        number=177650450,
        optional=True,
    )
    progress: int = proto.Field(
        proto.INT32,
        number=72663597,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    start_time: str = proto.Field(
        proto.STRING,
        number=37467274,
        optional=True,
    )
    status: Status = proto.Field(
        proto.ENUM,
        number=181260274,
        optional=True,
        enum=Status,
    )
    status_message: str = proto.Field(
        proto.STRING,
        number=297428154,
        optional=True,
    )
    target_id: int = proto.Field(
        proto.UINT64,
        number=258165385,
        optional=True,
    )
    target_link: str = proto.Field(
        proto.STRING,
        number=62671336,
        optional=True,
    )
    user: str = proto.Field(
        proto.STRING,
        number=3599307,
        optional=True,
    )
    warnings: MutableSequence["Warnings"] = proto.RepeatedField(
        proto.MESSAGE,
        number=498091095,
        message="Warnings",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )

    @property
    def done(self) -> bool:
        """Return True if the backing extended operation is completed, False otherwise."""
        return self.status == type(self.status).DONE


class OperationAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.OperationsScopedList]):
            [Output Only] A map of scoped operation lists.
        kind (str):
            [Output Only] Type of resource. Always
            ``compute#operationAggregatedList`` for aggregated lists of
            operations.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than ``maxResults``, use the ``nextPageToken`` as a
            value for the query parameter ``pageToken`` in the next list
            request. Subsequent list requests will have their own
            ``nextPageToken`` to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "OperationsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="OperationsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class OperationList(proto.Message):
    r"""Contains a list of Operation resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Operation]):
            [Output Only] A list of Operation resources.
        kind (str):
            [Output Only] Type of resource. Always
            ``compute#operations`` for Operations resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than ``maxResults``, use the ``nextPageToken`` as a
            value for the query parameter ``pageToken`` in the next list
            request. Subsequent list requests will have their own
            ``nextPageToken`` to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Operation"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Operation",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class OperationsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        operations (MutableSequence[google.cloud.compute_v1.types.Operation]):
            [Output Only] A list of operations contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of operations when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    operations: MutableSequence["Operation"] = proto.RepeatedField(
        proto.MESSAGE,
        number=4184044,
        message="Operation",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class OutlierDetection(proto.Message):
    r"""Settings controlling the eviction of unhealthy hosts from the
    load balancing pool for the backend service.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        base_ejection_time (google.cloud.compute_v1.types.Duration):
            The base time that a host is ejected for. The
            real ejection time is equal to the base ejection
            time multiplied by the number of times the host
            has been ejected. Defaults to 30000ms or 30s.

            This field is a member of `oneof`_ ``_base_ejection_time``.
        consecutive_errors (int):
            Number of errors before a host is ejected
            from the connection pool. When the backend host
            is accessed over HTTP, a 5xx return code
            qualifies as an error. Defaults to 5. Not
            supported when the backend service is referenced
            by a URL map that is bound to target gRPC proxy
            that has validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_consecutive_errors``.
        consecutive_gateway_failure (int):
            The number of consecutive gateway failures
            (502, 503, 504 status or connection errors that
            are mapped to one of those status codes) before
            a consecutive gateway failure ejection occurs.
            Defaults to 3. Not supported when the backend
            service is referenced by a URL map that is bound
            to target gRPC proxy that has
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_consecutive_gateway_failure``.
        enforcing_consecutive_errors (int):
            The percentage chance that a host will be
            actually ejected when an outlier status is
            detected through consecutive 5xx. This setting
            can be used to disable ejection or to ramp it up
            slowly. Defaults to 0. Not supported when the
            backend service is referenced by a URL map that
            is bound to target gRPC proxy that has
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_enforcing_consecutive_errors``.
        enforcing_consecutive_gateway_failure (int):
            The percentage chance that a host will be
            actually ejected when an outlier status is
            detected through consecutive gateway failures.
            This setting can be used to disable ejection or
            to ramp it up slowly. Defaults to 100. Not
            supported when the backend service is referenced
            by a URL map that is bound to target gRPC proxy
            that has validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_enforcing_consecutive_gateway_failure``.
        enforcing_success_rate (int):
            The percentage chance that a host will be
            actually ejected when an outlier status is
            detected through success rate statistics. This
            setting can be used to disable ejection or to
            ramp it up slowly. Defaults to 100.

            This field is a member of `oneof`_ ``_enforcing_success_rate``.
        interval (google.cloud.compute_v1.types.Duration):
            Time interval between ejection analysis
            sweeps. This can result in both new ejections as
            well as hosts being returned to service.
            Defaults to 1 second.

            This field is a member of `oneof`_ ``_interval``.
        max_ejection_percent (int):
            Maximum percentage of hosts in the load
            balancing pool for the backend service that can
            be ejected. Defaults to 50%.

            This field is a member of `oneof`_ ``_max_ejection_percent``.
        success_rate_minimum_hosts (int):
            The number of hosts in a cluster that must
            have enough request volume to detect success
            rate outliers. If the number of hosts is less
            than this setting, outlier detection via success
            rate statistics is not performed for any host in
            the cluster. Defaults to 5.

            This field is a member of `oneof`_ ``_success_rate_minimum_hosts``.
        success_rate_request_volume (int):
            The minimum number of total requests that
            must be collected in one interval (as defined by
            the interval duration above) to include this
            host in success rate based outlier detection. If
            the volume is lower than this setting, outlier
            detection via success rate statistics is not
            performed for that host. Defaults to 100.

            This field is a member of `oneof`_ ``_success_rate_request_volume``.
        success_rate_stdev_factor (int):
            This factor is used to determine the ejection threshold for
            success rate outlier ejection. The ejection threshold is the
            difference between the mean success rate, and the product of
            this factor and the standard deviation of the mean success
            rate: mean - (stdev \* success_rate_stdev_factor). This
            factor is divided by a thousand to get a double. That is, if
            the desired factor is 1.9, the runtime value should be 1900.
            Defaults to 1900.

            This field is a member of `oneof`_ ``_success_rate_stdev_factor``.
    """

    base_ejection_time: "Duration" = proto.Field(
        proto.MESSAGE,
        number=80997255,
        optional=True,
        message="Duration",
    )
    consecutive_errors: int = proto.Field(
        proto.INT32,
        number=387193248,
        optional=True,
    )
    consecutive_gateway_failure: int = proto.Field(
        proto.INT32,
        number=417504250,
        optional=True,
    )
    enforcing_consecutive_errors: int = proto.Field(
        proto.INT32,
        number=213133760,
        optional=True,
    )
    enforcing_consecutive_gateway_failure: int = proto.Field(
        proto.INT32,
        number=394440666,
        optional=True,
    )
    enforcing_success_rate: int = proto.Field(
        proto.INT32,
        number=194508732,
        optional=True,
    )
    interval: "Duration" = proto.Field(
        proto.MESSAGE,
        number=33547461,
        optional=True,
        message="Duration",
    )
    max_ejection_percent: int = proto.Field(
        proto.INT32,
        number=18436888,
        optional=True,
    )
    success_rate_minimum_hosts: int = proto.Field(
        proto.INT32,
        number=525766903,
        optional=True,
    )
    success_rate_request_volume: int = proto.Field(
        proto.INT32,
        number=281425357,
        optional=True,
    )
    success_rate_stdev_factor: int = proto.Field(
        proto.INT32,
        number=174735773,
        optional=True,
    )


class PacketIntervals(proto.Message):
    r"""Next free: 7

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        avg_ms (int):
            Average observed inter-packet interval in
            milliseconds.

            This field is a member of `oneof`_ ``_avg_ms``.
        duration (str):
            From how long ago in the past these intervals
            were observed. Check the Duration enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_duration``.
        max_ms (int):
            Maximum observed inter-packet interval in
            milliseconds.

            This field is a member of `oneof`_ ``_max_ms``.
        min_ms (int):
            Minimum observed inter-packet interval in
            milliseconds.

            This field is a member of `oneof`_ ``_min_ms``.
        num_intervals (int):
            Number of inter-packet intervals from which
            these statistics were derived.

            This field is a member of `oneof`_ ``_num_intervals``.
        type_ (str):
            The type of packets for which inter-packet
            intervals were computed. Check the Type enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Duration(proto.Enum):
        r"""From how long ago in the past these intervals were observed.

        Values:
            UNDEFINED_DURATION (0):
                A value indicating that the enum field is not
                set.
            DURATION_UNSPECIFIED (529071340):
                No description available.
            HOUR (2223588):
                No description available.
            MAX (76100):
                From BfdSession object creation time.
            MINUTE (126786068):
                No description available.
        """
        UNDEFINED_DURATION = 0
        DURATION_UNSPECIFIED = 529071340
        HOUR = 2223588
        MAX = 76100
        MINUTE = 126786068

    class Type(proto.Enum):
        r"""The type of packets for which inter-packet intervals were
        computed.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            LOOPBACK (356174219):
                Only applies to Echo packets. This shows the
                intervals between sending and receiving the same
                packet.
            RECEIVE (189660867):
                Intervals between received packets.
            TRANSMIT (452903600):
                Intervals between transmitted packets.
            TYPE_UNSPECIFIED (437714322):
                No description available.
        """
        UNDEFINED_TYPE = 0
        LOOPBACK = 356174219
        RECEIVE = 189660867
        TRANSMIT = 452903600
        TYPE_UNSPECIFIED = 437714322

    avg_ms: int = proto.Field(
        proto.INT64,
        number=204811827,
        optional=True,
    )
    duration: str = proto.Field(
        proto.STRING,
        number=155471252,
        optional=True,
    )
    max_ms: int = proto.Field(
        proto.INT64,
        number=529474145,
        optional=True,
    )
    min_ms: int = proto.Field(
        proto.INT64,
        number=536564403,
        optional=True,
    )
    num_intervals: int = proto.Field(
        proto.INT64,
        number=186329813,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class PacketMirroring(proto.Message):
    r"""Represents a Packet Mirroring resource. Packet Mirroring
    clones the traffic of specified instances in your Virtual
    Private Cloud (VPC) network and forwards it to a collector
    destination, such as an instance group of an internal TCP/UDP
    load balancer, for analysis or examination. For more information
    about setting up Packet Mirroring, see Using Packet Mirroring.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        collector_ilb (google.cloud.compute_v1.types.PacketMirroringForwardingRuleInfo):
            The Forwarding Rule resource of type
            loadBalancingScheme=INTERNAL that will be used
            as collector for mirrored traffic. The specified
            forwarding rule must have isMirroringCollector
            set to true.

            This field is a member of `oneof`_ ``_collector_ilb``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        enable (str):
            Indicates whether or not this packet
            mirroring takes effect. If set to FALSE, this
            packet mirroring policy will not be enforced on
            the network. The default is TRUE. Check the
            Enable enum for the list of possible values.

            This field is a member of `oneof`_ ``_enable``.
        filter (google.cloud.compute_v1.types.PacketMirroringFilter):
            Filter for mirrored traffic. If unspecified,
            all traffic is mirrored.

            This field is a member of `oneof`_ ``_filter``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#packetMirroring for packet mirrorings.

            This field is a member of `oneof`_ ``_kind``.
        mirrored_resources (google.cloud.compute_v1.types.PacketMirroringMirroredResourceInfo):
            PacketMirroring mirroredResourceInfos.
            MirroredResourceInfo specifies a set of mirrored
            VM instances, subnetworks and/or tags for which
            traffic from/to all VM instances will be
            mirrored.

            This field is a member of `oneof`_ ``_mirrored_resources``.
        name (str):
            Name of the resource; provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network (google.cloud.compute_v1.types.PacketMirroringNetworkInfo):
            Specifies the mirrored VPC network. Only
            packets in this network will be mirrored. All
            mirrored VMs should have a NIC in the given
            network. All mirrored subnetworks should belong
            to the given network.

            This field is a member of `oneof`_ ``_network``.
        priority (int):
            The priority of applying this configuration.
            Priority is used to break ties in cases where
            there is more than one matching rule. In the
            case of two rules that apply for a given
            Instance, the one with the lowest-numbered
            priority value wins. Default value is 1000.
            Valid range is 0 through 65535.

            This field is a member of `oneof`_ ``_priority``.
        region (str):
            [Output Only] URI of the region where the packetMirroring
            resides.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
    """

    class Enable(proto.Enum):
        r"""Indicates whether or not this packet mirroring takes effect.
        If set to FALSE, this packet mirroring policy will not be
        enforced on the network. The default is TRUE.

        Values:
            UNDEFINED_ENABLE (0):
                A value indicating that the enum field is not
                set.
            FALSE (66658563):
                No description available.
            TRUE (2583950):
                No description available.
        """
        UNDEFINED_ENABLE = 0
        FALSE = 66658563
        TRUE = 2583950

    collector_ilb: "PacketMirroringForwardingRuleInfo" = proto.Field(
        proto.MESSAGE,
        number=426607853,
        optional=True,
        message="PacketMirroringForwardingRuleInfo",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    enable: str = proto.Field(
        proto.STRING,
        number=311764355,
        optional=True,
    )
    filter: "PacketMirroringFilter" = proto.Field(
        proto.MESSAGE,
        number=336120696,
        optional=True,
        message="PacketMirroringFilter",
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    mirrored_resources: "PacketMirroringMirroredResourceInfo" = proto.Field(
        proto.MESSAGE,
        number=124817348,
        optional=True,
        message="PacketMirroringMirroredResourceInfo",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: "PacketMirroringNetworkInfo" = proto.Field(
        proto.MESSAGE,
        number=232872494,
        optional=True,
        message="PacketMirroringNetworkInfo",
    )
    priority: int = proto.Field(
        proto.UINT32,
        number=445151652,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )


class PacketMirroringAggregatedList(proto.Message):
    r"""Contains a list of packetMirrorings.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.PacketMirroringsScopedList]):
            A list of PacketMirroring resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "PacketMirroringsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="PacketMirroringsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class PacketMirroringFilter(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        I_p_protocols (MutableSequence[str]):
            Protocols that apply as filter on mirrored
            traffic. If no protocols are specified, all
            traffic that matches the specified CIDR ranges
            is mirrored. If neither cidrRanges nor
            IPProtocols is specified, all traffic is
            mirrored.
        cidr_ranges (MutableSequence[str]):
            IP CIDR ranges that apply as filter on the
            source (ingress) or destination (egress) IP in
            the IP header. Only IPv4 is supported. If no
            ranges are specified, all traffic that matches
            the specified IPProtocols is mirrored. If
            neither cidrRanges nor IPProtocols is specified,
            all traffic is mirrored.
        direction (str):
            Direction of traffic to mirror, either
            INGRESS, EGRESS, or BOTH. The default is BOTH.
            Check the Direction enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_direction``.
    """

    class Direction(proto.Enum):
        r"""Direction of traffic to mirror, either INGRESS, EGRESS, or
        BOTH. The default is BOTH.

        Values:
            UNDEFINED_DIRECTION (0):
                A value indicating that the enum field is not
                set.
            BOTH (2044801):
                Default, both directions are mirrored.
            EGRESS (432880501):
                Only egress traffic is mirrored.
            INGRESS (516931221):
                Only ingress traffic is mirrored.
        """
        UNDEFINED_DIRECTION = 0
        BOTH = 2044801
        EGRESS = 432880501
        INGRESS = 516931221

    I_p_protocols: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=98544854,
    )
    cidr_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=487901697,
    )
    direction: str = proto.Field(
        proto.STRING,
        number=111150975,
        optional=True,
    )


class PacketMirroringForwardingRuleInfo(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        canonical_url (str):
            [Output Only] Unique identifier for the forwarding rule;
            defined by the server.

            This field is a member of `oneof`_ ``_canonical_url``.
        url (str):
            Resource URL to the forwarding rule
            representing the ILB configured as destination
            of the mirrored traffic.

            This field is a member of `oneof`_ ``_url``.
    """

    canonical_url: str = proto.Field(
        proto.STRING,
        number=512294820,
        optional=True,
    )
    url: str = proto.Field(
        proto.STRING,
        number=116079,
        optional=True,
    )


class PacketMirroringList(proto.Message):
    r"""Contains a list of PacketMirroring resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.PacketMirroring]):
            A list of PacketMirroring resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#packetMirroring for packetMirrorings.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["PacketMirroring"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="PacketMirroring",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class PacketMirroringMirroredResourceInfo(proto.Message):
    r"""

    Attributes:
        instances (MutableSequence[google.cloud.compute_v1.types.PacketMirroringMirroredResourceInfoInstanceInfo]):
            A set of virtual machine instances that are
            being mirrored. They must live in zones
            contained in the same region as this
            packetMirroring. Note that this config will
            apply only to those network interfaces of the
            Instances that belong to the network specified
            in this packetMirroring. You may specify a
            maximum of 50 Instances.
        subnetworks (MutableSequence[google.cloud.compute_v1.types.PacketMirroringMirroredResourceInfoSubnetInfo]):
            A set of subnetworks for which traffic
            from/to all VM instances will be mirrored. They
            must live in the same region as this
            packetMirroring. You may specify a maximum of 5
            subnetworks.
        tags (MutableSequence[str]):
            A set of mirrored tags. Traffic from/to all
            VM instances that have one or more of these tags
            will be mirrored.
    """

    instances: MutableSequence[
        "PacketMirroringMirroredResourceInfoInstanceInfo"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=29097598,
        message="PacketMirroringMirroredResourceInfoInstanceInfo",
    )
    subnetworks: MutableSequence[
        "PacketMirroringMirroredResourceInfoSubnetInfo"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=415853125,
        message="PacketMirroringMirroredResourceInfoSubnetInfo",
    )
    tags: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=3552281,
    )


class PacketMirroringMirroredResourceInfoInstanceInfo(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        canonical_url (str):
            [Output Only] Unique identifier for the instance; defined by
            the server.

            This field is a member of `oneof`_ ``_canonical_url``.
        url (str):
            Resource URL to the virtual machine instance
            which is being mirrored.

            This field is a member of `oneof`_ ``_url``.
    """

    canonical_url: str = proto.Field(
        proto.STRING,
        number=512294820,
        optional=True,
    )
    url: str = proto.Field(
        proto.STRING,
        number=116079,
        optional=True,
    )


class PacketMirroringMirroredResourceInfoSubnetInfo(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        canonical_url (str):
            [Output Only] Unique identifier for the subnetwork; defined
            by the server.

            This field is a member of `oneof`_ ``_canonical_url``.
        url (str):
            Resource URL to the subnetwork for which
            traffic from/to all VM instances will be
            mirrored.

            This field is a member of `oneof`_ ``_url``.
    """

    canonical_url: str = proto.Field(
        proto.STRING,
        number=512294820,
        optional=True,
    )
    url: str = proto.Field(
        proto.STRING,
        number=116079,
        optional=True,
    )


class PacketMirroringNetworkInfo(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        canonical_url (str):
            [Output Only] Unique identifier for the network; defined by
            the server.

            This field is a member of `oneof`_ ``_canonical_url``.
        url (str):
            URL of the network resource.

            This field is a member of `oneof`_ ``_url``.
    """

    canonical_url: str = proto.Field(
        proto.STRING,
        number=512294820,
        optional=True,
    )
    url: str = proto.Field(
        proto.STRING,
        number=116079,
        optional=True,
    )


class PacketMirroringsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        packet_mirrorings (MutableSequence[google.cloud.compute_v1.types.PacketMirroring]):
            A list of packetMirrorings contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of packetMirrorings when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    packet_mirrorings: MutableSequence["PacketMirroring"] = proto.RepeatedField(
        proto.MESSAGE,
        number=154615079,
        message="PacketMirroring",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class PatchAutoscalerRequest(proto.Message):
    r"""A request message for Autoscalers.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaler (str):
            Name of the autoscaler to patch.

            This field is a member of `oneof`_ ``_autoscaler``.
        autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            Name of the zone for this request.
    """

    autoscaler: str = proto.Field(
        proto.STRING,
        number=517258967,
        optional=True,
    )
    autoscaler_resource: "Autoscaler" = proto.Field(
        proto.MESSAGE,
        number=207616118,
        message="Autoscaler",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class PatchBackendBucketRequest(proto.Message):
    r"""A request message for BackendBuckets.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_bucket (str):
            Name of the BackendBucket resource to patch.
        backend_bucket_resource (google.cloud.compute_v1.types.BackendBucket):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_bucket: str = proto.Field(
        proto.STRING,
        number=91714037,
    )
    backend_bucket_resource: "BackendBucket" = proto.Field(
        proto.MESSAGE,
        number=380757784,
        message="BackendBucket",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to patch.
        backend_service_resource (google.cloud.compute_v1.types.BackendService):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    backend_service_resource: "BackendService" = proto.Field(
        proto.MESSAGE,
        number=347586723,
        message="BackendService",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_resource: "FirewallPolicy" = proto.Field(
        proto.MESSAGE,
        number=495049532,
        message="FirewallPolicy",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchFirewallRequest(proto.Message):
    r"""A request message for Firewalls.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall (str):
            Name of the firewall rule to patch.
        firewall_resource (google.cloud.compute_v1.types.Firewall):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall: str = proto.Field(
        proto.STRING,
        number=511016192,
    )
    firewall_resource: "Firewall" = proto.Field(
        proto.MESSAGE,
        number=41425005,
        message="Firewall",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchForwardingRuleRequest(proto.Message):
    r"""A request message for ForwardingRules.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rule (str):
            Name of the ForwardingRule resource to patch.
        forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
    )
    forwarding_rule_resource: "ForwardingRule" = proto.Field(
        proto.MESSAGE,
        number=301211695,
        message="ForwardingRule",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchGlobalForwardingRuleRequest(proto.Message):
    r"""A request message for GlobalForwardingRules.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rule (str):
            Name of the ForwardingRule resource to patch.
        forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
    )
    forwarding_rule_resource: "ForwardingRule" = proto.Field(
        proto.MESSAGE,
        number=301211695,
        message="ForwardingRule",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchGlobalPublicDelegatedPrefixeRequest(proto.Message):
    r"""A request message for GlobalPublicDelegatedPrefixes.Patch.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        public_delegated_prefix (str):
            Name of the PublicDelegatedPrefix resource to
            patch.
        public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_delegated_prefix: str = proto.Field(
        proto.STRING,
        number=204238440,
    )
    public_delegated_prefix_resource: "PublicDelegatedPrefix" = proto.Field(
        proto.MESSAGE,
        number=47594501,
        message="PublicDelegatedPrefix",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchHealthCheckRequest(proto.Message):
    r"""A request message for HealthChecks.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check (str):
            Name of the HealthCheck resource to patch.
        health_check_resource (google.cloud.compute_v1.types.HealthCheck):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
    )
    health_check_resource: "HealthCheck" = proto.Field(
        proto.MESSAGE,
        number=201925032,
        message="HealthCheck",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchImageRequest(proto.Message):
    r"""A request message for Images.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        image (str):
            Name of the image resource to patch.
        image_resource (google.cloud.compute_v1.types.Image):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    image: str = proto.Field(
        proto.STRING,
        number=100313435,
    )
    image_resource: "Image" = proto.Field(
        proto.MESSAGE,
        number=371171954,
        message="Image",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchInstanceGroupManagerRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the instance group manager.
        instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where you want to create
            the managed instance group.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_manager_resource: "InstanceGroupManager" = proto.Field(
        proto.MESSAGE,
        number=261063946,
        message="InstanceGroupManager",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class PatchInterconnectAttachmentRequest(proto.Message):
    r"""A request message for InterconnectAttachments.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        interconnect_attachment (str):
            Name of the interconnect attachment to patch.
        interconnect_attachment_resource (google.cloud.compute_v1.types.InterconnectAttachment):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    interconnect_attachment: str = proto.Field(
        proto.STRING,
        number=308135284,
    )
    interconnect_attachment_resource: "InterconnectAttachment" = proto.Field(
        proto.MESSAGE,
        number=212341369,
        message="InterconnectAttachment",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchInterconnectRequest(proto.Message):
    r"""A request message for Interconnects.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        interconnect (str):
            Name of the interconnect to update.
        interconnect_resource (google.cloud.compute_v1.types.Interconnect):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    interconnect: str = proto.Field(
        proto.STRING,
        number=224601230,
    )
    interconnect_resource: "Interconnect" = proto.Field(
        proto.MESSAGE,
        number=397611167,
        message="Interconnect",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchNetworkEdgeSecurityServiceRequest(proto.Message):
    r"""A request message for NetworkEdgeSecurityServices.Patch. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_edge_security_service (str):
            Name of the network edge security service to
            update.
        network_edge_security_service_resource (google.cloud.compute_v1.types.NetworkEdgeSecurityService):
            The body resource for this request
        paths (str):

            This field is a member of `oneof`_ ``_paths``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        update_mask (str):
            Indicates fields to be updated as part of
            this request.

            This field is a member of `oneof`_ ``_update_mask``.
    """

    network_edge_security_service: str = proto.Field(
        proto.STRING,
        number=157011879,
    )
    network_edge_security_service_resource: "NetworkEdgeSecurityService" = proto.Field(
        proto.MESSAGE,
        number=477548966,
        message="NetworkEdgeSecurityService",
    )
    paths: str = proto.Field(
        proto.STRING,
        number=106438894,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    update_mask: str = proto.Field(
        proto.STRING,
        number=500079778,
        optional=True,
    )


class PatchNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_resource: "FirewallPolicy" = proto.Field(
        proto.MESSAGE,
        number=495049532,
        message="FirewallPolicy",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchNetworkRequest(proto.Message):
    r"""A request message for Networks.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network (str):
            Name of the network to update.
        network_resource (google.cloud.compute_v1.types.Network):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    network_resource: "Network" = proto.Field(
        proto.MESSAGE,
        number=122105599,
        message="Network",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_group (str):
            Name of the NodeGroup resource to update.
        node_group_resource (google.cloud.compute_v1.types.NodeGroup):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    node_group: str = proto.Field(
        proto.STRING,
        number=469958146,
    )
    node_group_resource: "NodeGroup" = proto.Field(
        proto.MESSAGE,
        number=505321899,
        message="NodeGroup",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class PatchPacketMirroringRequest(proto.Message):
    r"""A request message for PacketMirrorings.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        packet_mirroring (str):
            Name of the PacketMirroring resource to
            patch.
        packet_mirroring_resource (google.cloud.compute_v1.types.PacketMirroring):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    packet_mirroring: str = proto.Field(
        proto.STRING,
        number=22305996,
    )
    packet_mirroring_resource: "PacketMirroring" = proto.Field(
        proto.MESSAGE,
        number=493501985,
        message="PacketMirroring",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchPerInstanceConfigsInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    InstanceGroupManagers.PatchPerInstanceConfigs. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        instance_group_managers_patch_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersPatchPerInstanceConfigsReq):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the managed
            instance group is located. It should conform to
            RFC1035.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_patch_per_instance_configs_req_resource: "InstanceGroupManagersPatchPerInstanceConfigsReq" = proto.Field(
        proto.MESSAGE,
        number=356650495,
        message="InstanceGroupManagersPatchPerInstanceConfigsReq",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class PatchPerInstanceConfigsRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.PatchPerInstanceConfigs. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request,
            should conform to RFC1035.
        region_instance_group_manager_patch_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerPatchInstanceConfigReq):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_manager_patch_instance_config_req_resource: "RegionInstanceGroupManagerPatchInstanceConfigReq" = proto.Field(
        proto.MESSAGE,
        number=197682890,
        message="RegionInstanceGroupManagerPatchInstanceConfigReq",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchPublicAdvertisedPrefixeRequest(proto.Message):
    r"""A request message for PublicAdvertisedPrefixes.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        public_advertised_prefix (str):
            Name of the PublicAdvertisedPrefix resource
            to patch.
        public_advertised_prefix_resource (google.cloud.compute_v1.types.PublicAdvertisedPrefix):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_advertised_prefix: str = proto.Field(
        proto.STRING,
        number=101874590,
    )
    public_advertised_prefix_resource: "PublicAdvertisedPrefix" = proto.Field(
        proto.MESSAGE,
        number=233614223,
        message="PublicAdvertisedPrefix",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchPublicDelegatedPrefixeRequest(proto.Message):
    r"""A request message for PublicDelegatedPrefixes.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        public_delegated_prefix (str):
            Name of the PublicDelegatedPrefix resource to
            patch.
        public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix):
            The body resource for this request
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    public_delegated_prefix: str = proto.Field(
        proto.STRING,
        number=204238440,
    )
    public_delegated_prefix_resource: "PublicDelegatedPrefix" = proto.Field(
        proto.MESSAGE,
        number=47594501,
        message="PublicDelegatedPrefix",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRegionAutoscalerRequest(proto.Message):
    r"""A request message for RegionAutoscalers.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaler (str):
            Name of the autoscaler to patch.

            This field is a member of `oneof`_ ``_autoscaler``.
        autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    autoscaler: str = proto.Field(
        proto.STRING,
        number=517258967,
        optional=True,
    )
    autoscaler_resource: "Autoscaler" = proto.Field(
        proto.MESSAGE,
        number=207616118,
        message="Autoscaler",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRegionBackendServiceRequest(proto.Message):
    r"""A request message for RegionBackendServices.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to patch.
        backend_service_resource (google.cloud.compute_v1.types.BackendService):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    backend_service_resource: "BackendService" = proto.Field(
        proto.MESSAGE,
        number=347586723,
        message="BackendService",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRegionHealthCheckRequest(proto.Message):
    r"""A request message for RegionHealthChecks.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check (str):
            Name of the HealthCheck resource to patch.
        health_check_resource (google.cloud.compute_v1.types.HealthCheck):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
    )
    health_check_resource: "HealthCheck" = proto.Field(
        proto.MESSAGE,
        number=201925032,
        message="HealthCheck",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRegionHealthCheckServiceRequest(proto.Message):
    r"""A request message for RegionHealthCheckServices.Patch. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check_service (str):
            Name of the HealthCheckService to update. The
            name must be 1-63 characters long, and comply
            with RFC1035.
        health_check_service_resource (google.cloud.compute_v1.types.HealthCheckService):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check_service: str = proto.Field(
        proto.STRING,
        number=408374747,
    )
    health_check_service_resource: "HealthCheckService" = proto.Field(
        proto.MESSAGE,
        number=477367794,
        message="HealthCheckService",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for RegionInstanceGroupManagers.Patch. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the instance group manager.
        instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_manager_resource: "InstanceGroupManager" = proto.Field(
        proto.MESSAGE,
        number=261063946,
        message="InstanceGroupManager",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for RegionNetworkFirewallPolicies.Patch.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_resource: "FirewallPolicy" = proto.Field(
        proto.MESSAGE,
        number=495049532,
        message="FirewallPolicy",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRegionSecurityPolicyRequest(proto.Message):
    r"""A request message for RegionSecurityPolicies.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        security_policy (str):
            Name of the security policy to update.
        security_policy_resource (google.cloud.compute_v1.types.SecurityPolicy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )
    security_policy_resource: "SecurityPolicy" = proto.Field(
        proto.MESSAGE,
        number=216159612,
        message="SecurityPolicy",
    )


class PatchRegionSslPolicyRequest(proto.Message):
    r"""A request message for RegionSslPolicies.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_policy (str):
            Name of the SSL policy to update. The name
            must be 1-63 characters long, and comply with
            RFC1035.
        ssl_policy_resource (google.cloud.compute_v1.types.SslPolicy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_policy: str = proto.Field(
        proto.STRING,
        number=295190213,
    )
    ssl_policy_resource: "SslPolicy" = proto.Field(
        proto.MESSAGE,
        number=274891848,
        message="SslPolicy",
    )


class PatchRegionTargetHttpsProxyRequest(proto.Message):
    r"""A request message for RegionTargetHttpsProxies.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource to
            patch.
        target_https_proxy_resource (google.cloud.compute_v1.types.TargetHttpsProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )
    target_https_proxy_resource: "TargetHttpsProxy" = proto.Field(
        proto.MESSAGE,
        number=433657473,
        message="TargetHttpsProxy",
    )


class PatchRegionUrlMapRequest(proto.Message):
    r"""A request message for RegionUrlMaps.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            begin_interface: MixerMutationRequestBuilder Request ID to
            support idempotency.

            This field is a member of `oneof`_ ``_request_id``.
        url_map (str):
            Name of the UrlMap resource to patch.
        url_map_resource (google.cloud.compute_v1.types.UrlMap):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )
    url_map_resource: "UrlMap" = proto.Field(
        proto.MESSAGE,
        number=168675425,
        message="UrlMap",
    )


class PatchRouterRequest(proto.Message):
    r"""A request message for Routers.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        router (str):
            Name of the Router resource to patch.
        router_resource (google.cloud.compute_v1.types.Router):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    router: str = proto.Field(
        proto.STRING,
        number=148608841,
    )
    router_resource: "Router" = proto.Field(
        proto.MESSAGE,
        number=155222084,
        message="Router",
    )


class PatchRuleFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.PatchRule. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
            The body resource for this request
        priority (int):
            The priority of the rule to patch.

            This field is a member of `oneof`_ ``_priority``.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_rule_resource: "FirewallPolicyRule" = proto.Field(
        proto.MESSAGE,
        number=250523523,
        message="FirewallPolicyRule",
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRuleNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.PatchRule. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
            The body resource for this request
        priority (int):
            The priority of the rule to patch.

            This field is a member of `oneof`_ ``_priority``.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_rule_resource: "FirewallPolicyRule" = proto.Field(
        proto.MESSAGE,
        number=250523523,
        message="FirewallPolicyRule",
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRuleRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.PatchRule. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
            The body resource for this request
        priority (int):
            The priority of the rule to patch.

            This field is a member of `oneof`_ ``_priority``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    firewall_policy_rule_resource: "FirewallPolicyRule" = proto.Field(
        proto.MESSAGE,
        number=250523523,
        message="FirewallPolicyRule",
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class PatchRuleSecurityPolicyRequest(proto.Message):
    r"""A request message for SecurityPolicies.PatchRule. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        priority (int):
            The priority of the rule to patch.

            This field is a member of `oneof`_ ``_priority``.
        project (str):
            Project ID for this request.
        security_policy (str):
            Name of the security policy to update.
        security_policy_rule_resource (google.cloud.compute_v1.types.SecurityPolicyRule):
            The body resource for this request
        validate_only (bool):
            If true, the request will not be committed.

            This field is a member of `oneof`_ ``_validate_only``.
    """

    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )
    security_policy_rule_resource: "SecurityPolicyRule" = proto.Field(
        proto.MESSAGE,
        number=402693443,
        message="SecurityPolicyRule",
    )
    validate_only: bool = proto.Field(
        proto.BOOL,
        number=242744629,
        optional=True,
    )


class PatchSecurityPolicyRequest(proto.Message):
    r"""A request message for SecurityPolicies.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        security_policy (str):
            Name of the security policy to update.
        security_policy_resource (google.cloud.compute_v1.types.SecurityPolicy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )
    security_policy_resource: "SecurityPolicy" = proto.Field(
        proto.MESSAGE,
        number=216159612,
        message="SecurityPolicy",
    )


class PatchServiceAttachmentRequest(proto.Message):
    r"""A request message for ServiceAttachments.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The region scoping this request and should
            conform to RFC1035.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        service_attachment (str):
            The resource id of the ServiceAttachment to
            patch. It should conform to RFC1035 resource
            name or be a string form on an unsigned long
            number.
        service_attachment_resource (google.cloud.compute_v1.types.ServiceAttachment):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    service_attachment: str = proto.Field(
        proto.STRING,
        number=338957549,
    )
    service_attachment_resource: "ServiceAttachment" = proto.Field(
        proto.MESSAGE,
        number=472980256,
        message="ServiceAttachment",
    )


class PatchSslPolicyRequest(proto.Message):
    r"""A request message for SslPolicies.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_policy (str):
            Name of the SSL policy to update. The name
            must be 1-63 characters long, and comply with
            RFC1035.
        ssl_policy_resource (google.cloud.compute_v1.types.SslPolicy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_policy: str = proto.Field(
        proto.STRING,
        number=295190213,
    )
    ssl_policy_resource: "SslPolicy" = proto.Field(
        proto.MESSAGE,
        number=274891848,
        message="SslPolicy",
    )


class PatchSubnetworkRequest(proto.Message):
    r"""A request message for Subnetworks.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        drain_timeout_seconds (int):
            The drain timeout specifies the upper bound in seconds on
            the amount of time allowed to drain connections from the
            current ACTIVE subnetwork to the current BACKUP subnetwork.
            The drain timeout is only applicable when the following
            conditions are true: - the subnetwork being patched has
            purpose = INTERNAL_HTTPS_LOAD_BALANCER - the subnetwork
            being patched has role = BACKUP - the patch request is
            setting the role to ACTIVE. Note that after this patch
            operation the roles of the ACTIVE and BACKUP subnetworks
            will be swapped.

            This field is a member of `oneof`_ ``_drain_timeout_seconds``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        subnetwork (str):
            Name of the Subnetwork resource to patch.
        subnetwork_resource (google.cloud.compute_v1.types.Subnetwork):
            The body resource for this request
    """

    drain_timeout_seconds: int = proto.Field(
        proto.INT32,
        number=357707098,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
    )
    subnetwork_resource: "Subnetwork" = proto.Field(
        proto.MESSAGE,
        number=42233151,
        message="Subnetwork",
    )


class PatchTargetGrpcProxyRequest(proto.Message):
    r"""A request message for TargetGrpcProxies.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_grpc_proxy (str):
            Name of the TargetGrpcProxy resource to
            patch.
        target_grpc_proxy_resource (google.cloud.compute_v1.types.TargetGrpcProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_grpc_proxy: str = proto.Field(
        proto.STRING,
        number=5020283,
    )
    target_grpc_proxy_resource: "TargetGrpcProxy" = proto.Field(
        proto.MESSAGE,
        number=328922450,
        message="TargetGrpcProxy",
    )


class PatchTargetHttpProxyRequest(proto.Message):
    r"""A request message for TargetHttpProxies.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_http_proxy (str):
            Name of the TargetHttpProxy resource to
            patch.
        target_http_proxy_resource (google.cloud.compute_v1.types.TargetHttpProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_http_proxy: str = proto.Field(
        proto.STRING,
        number=206872421,
    )
    target_http_proxy_resource: "TargetHttpProxy" = proto.Field(
        proto.MESSAGE,
        number=24696744,
        message="TargetHttpProxy",
    )


class PatchTargetHttpsProxyRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.Patch. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource to
            patch.
        target_https_proxy_resource (google.cloud.compute_v1.types.TargetHttpsProxy):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )
    target_https_proxy_resource: "TargetHttpsProxy" = proto.Field(
        proto.MESSAGE,
        number=433657473,
        message="TargetHttpsProxy",
    )


class PatchUrlMapRequest(proto.Message):
    r"""A request message for UrlMaps.Patch. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        url_map (str):
            Name of the UrlMap resource to patch.
        url_map_resource (google.cloud.compute_v1.types.UrlMap):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )
    url_map_resource: "UrlMap" = proto.Field(
        proto.MESSAGE,
        number=168675425,
        message="UrlMap",
    )


class PathMatcher(proto.Message):
    r"""A matcher for the path portion of the URL. The BackendService
    from the longest-matched rule will serve the URL. If no rule was
    matched, the default service is used.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        default_route_action (google.cloud.compute_v1.types.HttpRouteAction):
            defaultRouteAction takes effect when none of
            the pathRules or routeRules match. The load
            balancer performs advanced routing actions, such
            as URL rewrites and header transformations,
            before forwarding the request to the selected
            backend. If defaultRouteAction specifies any
            weightedBackendServices, defaultService must not
            be set. Conversely if defaultService is set,
            defaultRouteAction cannot contain any
            weightedBackendServices. Only one of
            defaultRouteAction or defaultUrlRedirect must be
            set. URL maps for Classic external HTTP(S) load
            balancers only support the urlRewrite action
            within a path matcher's defaultRouteAction.

            This field is a member of `oneof`_ ``_default_route_action``.
        default_service (str):
            The full or partial URL to the BackendService resource. This
            URL is used if none of the pathRules or routeRules defined
            by this PathMatcher are matched. For example, the following
            are all valid URLs to a BackendService resource: -
            https://www.googleapis.com/compute/v1/projects/project
            /global/backendServices/backendService -
            compute/v1/projects/project/global/backendServices/backendService
            - global/backendServices/backendService If
            defaultRouteAction is also specified, advanced routing
            actions, such as URL rewrites, take effect before sending
            the request to the backend. However, if defaultService is
            specified, defaultRouteAction cannot contain any
            weightedBackendServices. Conversely, if defaultRouteAction
            specifies any weightedBackendServices, defaultService must
            not be specified. Only one of defaultService,
            defaultUrlRedirect , or
            defaultRouteAction.weightedBackendService must be set.
            Authorization requires one or more of the following Google
            IAM permissions on the specified resource default_service: -
            compute.backendBuckets.use - compute.backendServices.use

            This field is a member of `oneof`_ ``_default_service``.
        default_url_redirect (google.cloud.compute_v1.types.HttpRedirectAction):
            When none of the specified pathRules or
            routeRules match, the request is redirected to a
            URL specified by defaultUrlRedirect. If
            defaultUrlRedirect is specified, defaultService
            or defaultRouteAction must not be set. Not
            supported when the URL map is bound to a target
            gRPC proxy.

            This field is a member of `oneof`_ ``_default_url_redirect``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        header_action (google.cloud.compute_v1.types.HttpHeaderAction):
            Specifies changes to request and response
            headers that need to take effect for the
            selected backend service. HeaderAction specified
            here are applied after the matching
            HttpRouteRule HeaderAction and before the
            HeaderAction in the UrlMap HeaderAction is not
            supported for load balancers that have their
            loadBalancingScheme set to EXTERNAL. Not
            supported when the URL map is bound to a target
            gRPC proxy that has validateForProxyless field
            set to true.

            This field is a member of `oneof`_ ``_header_action``.
        name (str):
            The name to which this PathMatcher is
            referred by the HostRule.

            This field is a member of `oneof`_ ``_name``.
        path_rules (MutableSequence[google.cloud.compute_v1.types.PathRule]):
            The list of path rules. Use this list instead of routeRules
            when routing based on simple path matching is all that's
            required. The order by which path rules are specified does
            not matter. Matches are always done on the
            longest-path-first basis. For example: a pathRule with a
            path /a/b/c/\* will match before /a/b/\* irrespective of the
            order in which those paths appear in this list. Within a
            given pathMatcher, only one of pathRules or routeRules must
            be set.
        route_rules (MutableSequence[google.cloud.compute_v1.types.HttpRouteRule]):
            The list of HTTP route rules. Use this list
            instead of pathRules when advanced route
            matching and routing actions are desired.
            routeRules are evaluated in order of priority,
            from the lowest to highest number. Within a
            given pathMatcher, you can set only one of
            pathRules or routeRules.
    """

    default_route_action: "HttpRouteAction" = proto.Field(
        proto.MESSAGE,
        number=378919466,
        optional=True,
        message="HttpRouteAction",
    )
    default_service: str = proto.Field(
        proto.STRING,
        number=370242231,
        optional=True,
    )
    default_url_redirect: "HttpRedirectAction" = proto.Field(
        proto.MESSAGE,
        number=359503338,
        optional=True,
        message="HttpRedirectAction",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    header_action: "HttpHeaderAction" = proto.Field(
        proto.MESSAGE,
        number=328077352,
        optional=True,
        message="HttpHeaderAction",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    path_rules: MutableSequence["PathRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=104439901,
        message="PathRule",
    )
    route_rules: MutableSequence["HttpRouteRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=376292225,
        message="HttpRouteRule",
    )


class PathRule(proto.Message):
    r"""A path-matching rule for a URL. If matched, will use the
    specified BackendService to handle the traffic arriving at this
    URL.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        paths (MutableSequence[str]):
            The list of path patterns to match. Each must start with /
            and the only place a \* is allowed is at the end following a
            /. The string fed to the path matcher does not include any
            text after the first ? or #, and those chars are not allowed
            here.
        route_action (google.cloud.compute_v1.types.HttpRouteAction):
            In response to a matching path, the load
            balancer performs advanced routing actions, such
            as URL rewrites and header transformations,
            before forwarding the request to the selected
            backend. If routeAction specifies any
            weightedBackendServices, service must not be
            set. Conversely if service is set, routeAction
            cannot contain any weightedBackendServices. Only
            one of routeAction or urlRedirect must be set.
            URL maps for Classic external HTTP(S) load
            balancers only support the urlRewrite action
            within a path rule's routeAction.

            This field is a member of `oneof`_ ``_route_action``.
        service (str):
            The full or partial URL of the backend
            service resource to which traffic is directed if
            this rule is matched. If routeAction is also
            specified, advanced routing actions, such as URL
            rewrites, take effect before sending the request
            to the backend. However, if service is
            specified, routeAction cannot contain any
            weightedBackendServices. Conversely, if
            routeAction specifies any
            weightedBackendServices, service must not be
            specified. Only one of urlRedirect, service or
            routeAction.weightedBackendService must be set.

            This field is a member of `oneof`_ ``_service``.
        url_redirect (google.cloud.compute_v1.types.HttpRedirectAction):
            When a path pattern is matched, the request
            is redirected to a URL specified by urlRedirect.
            If urlRedirect is specified, service or
            routeAction must not be set. Not supported when
            the URL map is bound to a target gRPC proxy.

            This field is a member of `oneof`_ ``_url_redirect``.
    """

    paths: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=106438894,
    )
    route_action: "HttpRouteAction" = proto.Field(
        proto.MESSAGE,
        number=424563948,
        optional=True,
        message="HttpRouteAction",
    )
    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )
    url_redirect: "HttpRedirectAction" = proto.Field(
        proto.MESSAGE,
        number=405147820,
        optional=True,
        message="HttpRedirectAction",
    )


class PerInstanceConfig(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        fingerprint (str):
            Fingerprint of this per-instance config. This
            field can be used in optimistic locking. It is
            ignored when inserting a per-instance config. An
            up-to-date fingerprint must be provided in order
            to update an existing per-instance configuration
            or the field needs to be unset.

            This field is a member of `oneof`_ ``_fingerprint``.
        name (str):
            The name of a per-instance configuration and
            its corresponding instance. Serves as a merge
            key during UpdatePerInstanceConfigs operations,
            that is, if a per-instance configuration with
            the same name exists then it will be updated,
            otherwise a new one will be created for the VM
            instance with the same name. An attempt to
            create a per-instance configconfiguration for a
            VM instance that either doesn't exist or is not
            part of the group will result in an error.

            This field is a member of `oneof`_ ``_name``.
        preserved_state (google.cloud.compute_v1.types.PreservedState):
            The intended preserved state for the given
            instance. Does not contain preserved state
            generated from a stateful policy.

            This field is a member of `oneof`_ ``_preserved_state``.
        status (str):
            The status of applying this per-instance
            configuration on the corresponding managed
            instance. Check the Status enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_status``.
    """

    class Status(proto.Enum):
        r"""The status of applying this per-instance configuration on the
        corresponding managed instance.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            APPLYING (352003508):
                The per-instance configuration is being
                applied to the instance, but is not yet
                effective, possibly waiting for the instance to,
                for example, REFRESH.
            DELETING (528602024):
                The per-instance configuration deletion is
                being applied on the instance, possibly waiting
                for the instance to, for example, REFRESH.
            EFFECTIVE (244201863):
                The per-instance configuration is effective
                on the instance, meaning that all disks, ips and
                metadata specified in this configuration are
                attached or set on the instance.
            NONE (2402104):
                *[Default]* The default status, when no per-instance
                configuration exists.
            UNAPPLIED (483935140):
                The per-instance configuration is set on an
                instance but not been applied yet.
            UNAPPLIED_DELETION (313956873):
                The per-instance configuration has been
                deleted, but the deletion is not yet applied.
        """
        UNDEFINED_STATUS = 0
        APPLYING = 352003508
        DELETING = 528602024
        EFFECTIVE = 244201863
        NONE = 2402104
        UNAPPLIED = 483935140
        UNAPPLIED_DELETION = 313956873

    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    preserved_state: "PreservedState" = proto.Field(
        proto.MESSAGE,
        number=2634026,
        optional=True,
        message="PreservedState",
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )


class Policy(proto.Message):
    r"""An Identity and Access Management (IAM) policy, which specifies
    access controls for Google Cloud resources. A ``Policy`` is a
    collection of ``bindings``. A ``binding`` binds one or more
    ``members``, or principals, to a single ``role``. Principals can be
    user accounts, service accounts, Google groups, and domains (such as
    G Suite). A ``role`` is a named list of permissions; each ``role``
    can be an IAM predefined role or a user-created custom role. For
    some types of Google Cloud resources, a ``binding`` can also specify
    a ``condition``, which is a logical expression that allows access to
    a resource only if the expression evaluates to ``true``. A condition
    can add constraints based on attributes of the request, the
    resource, or both. To learn which resources support conditions in
    their IAM policies, see the `IAM
    documentation <https://cloud.google.com/iam/help/conditions/resource-policies>`__.
    **JSON example:** { "bindings": [ { "role":
    "roles/resourcemanager.organizationAdmin", "members": [
    "user:mike@example.com", "group:admins@example.com",
    "domain:google.com",
    "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, {
    "role": "roles/resourcemanager.organizationViewer", "members": [
    "user:eve@example.com" ], "condition": { "title": "expirable
    access", "description": "Does not grant access after Sep 2020",
    "expression": "request.time <
    timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
    "BwWWja0YfJA=", "version": 3 } **YAML example:** bindings: -
    members: - user:mike@example.com - group:admins@example.com -
    domain:google.com -
    serviceAccount:my-project-id@appspot.gserviceaccount.com role:
    roles/resourcemanager.organizationAdmin - members: -
    user:eve@example.com role: roles/resourcemanager.organizationViewer
    condition: title: expirable access description: Does not grant
    access after Sep 2020 expression: request.time <
    timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3
    For a description of IAM and its features, see the `IAM
    documentation <https://cloud.google.com/iam/docs/>`__.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        audit_configs (MutableSequence[google.cloud.compute_v1.types.AuditConfig]):
            Specifies cloud audit logging configuration
            for this policy.
        bindings (MutableSequence[google.cloud.compute_v1.types.Binding]):
            Associates a list of ``members``, or principals, with a
            ``role``. Optionally, may specify a ``condition`` that
            determines how and when the ``bindings`` are applied. Each
            of the ``bindings`` must contain at least one principal. The
            ``bindings`` in a ``Policy`` can refer to up to 1,500
            principals; up to 250 of these principals can be Google
            groups. Each occurrence of a principal counts towards these
            limits. For example, if the ``bindings`` grant 50 different
            roles to ``user:alice@example.com``, and not to any other
            principal, then you can add another 1,450 principals to the
            ``bindings`` in the ``Policy``.
        etag (str):
            ``etag`` is used for optimistic concurrency control as a way
            to help prevent simultaneous updates of a policy from
            overwriting each other. It is strongly suggested that
            systems make use of the ``etag`` in the read-modify-write
            cycle to perform policy updates in order to avoid race
            conditions: An ``etag`` is returned in the response to
            ``getIamPolicy``, and systems are expected to put that etag
            in the request to ``setIamPolicy`` to ensure that their
            change will be applied to the same version of the policy.
            **Important:** If you use IAM Conditions, you must include
            the ``etag`` field whenever you call ``setIamPolicy``. If
            you omit this field, then IAM allows you to overwrite a
            version ``3`` policy with a version ``1`` policy, and all of
            the conditions in the version ``3`` policy are lost.

            This field is a member of `oneof`_ ``_etag``.
        iam_owned (bool):

            This field is a member of `oneof`_ ``_iam_owned``.
        rules (MutableSequence[google.cloud.compute_v1.types.Rule]):
            This is deprecated and has no effect. Do not
            use.
        version (int):
            Specifies the format of the policy. Valid values are ``0``,
            ``1``, and ``3``. Requests that specify an invalid value are
            rejected. Any operation that affects conditional role
            bindings must specify version ``3``. This requirement
            applies to the following operations: \* Getting a policy
            that includes a conditional role binding \* Adding a
            conditional role binding to a policy \* Changing a
            conditional role binding in a policy \* Removing any role
            binding, with or without a condition, from a policy that
            includes conditions **Important:** If you use IAM
            Conditions, you must include the ``etag`` field whenever you
            call ``setIamPolicy``. If you omit this field, then IAM
            allows you to overwrite a version ``3`` policy with a
            version ``1`` policy, and all of the conditions in the
            version ``3`` policy are lost. If a policy does not include
            any conditions, operations on that policy may specify any
            valid version or leave the field unset. To learn which
            resources support conditions in their IAM policies, see the
            `IAM
            documentation <https://cloud.google.com/iam/help/conditions/resource-policies>`__.

            This field is a member of `oneof`_ ``_version``.
    """

    audit_configs: MutableSequence["AuditConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=328080653,
        message="AuditConfig",
    )
    bindings: MutableSequence["Binding"] = proto.RepeatedField(
        proto.MESSAGE,
        number=403251854,
        message="Binding",
    )
    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    iam_owned: bool = proto.Field(
        proto.BOOL,
        number=450566203,
        optional=True,
    )
    rules: MutableSequence["Rule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=108873975,
        message="Rule",
    )
    version: int = proto.Field(
        proto.INT32,
        number=351608024,
        optional=True,
    )


class PreconfiguredWafSet(proto.Message):
    r"""

    Attributes:
        expression_sets (MutableSequence[google.cloud.compute_v1.types.WafExpressionSet]):
            List of entities that are currently supported
            for WAF rules.
    """

    expression_sets: MutableSequence["WafExpressionSet"] = proto.RepeatedField(
        proto.MESSAGE,
        number=474011032,
        message="WafExpressionSet",
    )


class PreservedState(proto.Message):
    r"""Preserved state for a given instance.

    Attributes:
        disks (MutableMapping[str, google.cloud.compute_v1.types.PreservedStatePreservedDisk]):
            Preserved disks defined for this instance.
            This map is keyed with the device names of the
            disks.
        metadata (MutableMapping[str, str]):
            Preserved metadata defined for this instance.
    """

    disks: MutableMapping[str, "PreservedStatePreservedDisk"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=95594102,
        message="PreservedStatePreservedDisk",
    )
    metadata: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=86866735,
    )


class PreservedStatePreservedDisk(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_delete (str):
            These stateful disks will never be deleted during
            autohealing, update, instance recreate operations. This flag
            is used to configure if the disk should be deleted after it
            is no longer used by the group, e.g. when the given instance
            or the whole MIG is deleted. Note: disks attached in
            READ_ONLY mode cannot be auto-deleted. Check the AutoDelete
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_auto_delete``.
        mode (str):
            The mode in which to attach this disk, either READ_WRITE or
            READ_ONLY. If not specified, the default is to attach the
            disk in READ_WRITE mode. Check the Mode enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_mode``.
        source (str):
            The URL of the disk resource that is stateful
            and should be attached to the VM instance.

            This field is a member of `oneof`_ ``_source``.
    """

    class AutoDelete(proto.Enum):
        r"""These stateful disks will never be deleted during autohealing,
        update, instance recreate operations. This flag is used to configure
        if the disk should be deleted after it is no longer used by the
        group, e.g. when the given instance or the whole MIG is deleted.
        Note: disks attached in READ_ONLY mode cannot be auto-deleted.

        Values:
            UNDEFINED_AUTO_DELETE (0):
                A value indicating that the enum field is not
                set.
            NEVER (74175084):
                No description available.
            ON_PERMANENT_INSTANCE_DELETION (95727719):
                No description available.
        """
        UNDEFINED_AUTO_DELETE = 0
        NEVER = 74175084
        ON_PERMANENT_INSTANCE_DELETION = 95727719

    class Mode(proto.Enum):
        r"""The mode in which to attach this disk, either READ_WRITE or
        READ_ONLY. If not specified, the default is to attach the disk in
        READ_WRITE mode.

        Values:
            UNDEFINED_MODE (0):
                A value indicating that the enum field is not
                set.
            READ_ONLY (91950261):
                Attaches this disk in read-only mode. Multiple VM instances
                can use a disk in READ_ONLY mode at a time.
            READ_WRITE (173607894):
                *[Default]* Attaches this disk in READ_WRITE mode. Only one
                VM instance at a time can be attached to a disk in
                READ_WRITE mode.
        """
        UNDEFINED_MODE = 0
        READ_ONLY = 91950261
        READ_WRITE = 173607894

    auto_delete: str = proto.Field(
        proto.STRING,
        number=464761403,
        optional=True,
    )
    mode: str = proto.Field(
        proto.STRING,
        number=3357091,
        optional=True,
    )
    source: str = proto.Field(
        proto.STRING,
        number=177235995,
        optional=True,
    )


class PreviewRouterRequest(proto.Message):
    r"""A request message for Routers.Preview. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        router (str):
            Name of the Router resource to query.
        router_resource (google.cloud.compute_v1.types.Router):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    router: str = proto.Field(
        proto.STRING,
        number=148608841,
    )
    router_resource: "Router" = proto.Field(
        proto.MESSAGE,
        number=155222084,
        message="Router",
    )


class Project(proto.Message):
    r"""Represents a Project resource. A project is used to organize
    resources in a Google Cloud Platform environment. For more
    information, read about the Resource Hierarchy.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        common_instance_metadata (google.cloud.compute_v1.types.Metadata):
            Metadata key/value pairs available to all
            instances contained in this project. See Custom
            metadata for more information.

            This field is a member of `oneof`_ ``_common_instance_metadata``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        default_network_tier (str):
            This signifies the default network tier used
            for configuring resources of the project and can
            only take the following values: PREMIUM,
            STANDARD. Initially the default network tier is
            PREMIUM. Check the DefaultNetworkTier enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_default_network_tier``.
        default_service_account (str):
            [Output Only] Default service account used by VMs running in
            this project.

            This field is a member of `oneof`_ ``_default_service_account``.
        description (str):
            An optional textual description of the
            resource.

            This field is a member of `oneof`_ ``_description``.
        enabled_features (MutableSequence[str]):
            Restricted features enabled for use on this
            project.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server. This is *not* the
            project ID, and is just a unique ID used by Compute Engine
            to identify resources.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always compute#project
            for projects.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            The project ID. For example:
            my-example-project. Use the project ID to make
            requests to Compute Engine.

            This field is a member of `oneof`_ ``_name``.
        quotas (MutableSequence[google.cloud.compute_v1.types.Quota]):
            [Output Only] Quotas assigned to this project.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        usage_export_location (google.cloud.compute_v1.types.UsageExportLocation):
            The naming prefix for daily usage reports and
            the Google Cloud Storage bucket where they are
            stored.

            This field is a member of `oneof`_ ``_usage_export_location``.
        vm_dns_setting (str):
            [Output Only] Default internal DNS setting used by VMs
            running in this project. Check the VmDnsSetting enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_vm_dns_setting``.
        xpn_project_status (str):
            [Output Only] The role this project has in a shared VPC
            configuration. Currently, only projects with the host role,
            which is specified by the value HOST, are differentiated.
            Check the XpnProjectStatus enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_xpn_project_status``.
    """

    class DefaultNetworkTier(proto.Enum):
        r"""This signifies the default network tier used for configuring
        resources of the project and can only take the following values:
        PREMIUM, STANDARD. Initially the default network tier is
        PREMIUM.

        Values:
            UNDEFINED_DEFAULT_NETWORK_TIER (0):
                A value indicating that the enum field is not
                set.
            FIXED_STANDARD (310464328):
                Public internet quality with fixed bandwidth.
            PREMIUM (399530551):
                High quality, Google-grade network tier,
                support for all networking products.
            STANDARD (484642493):
                Public internet quality, only limited support
                for other networking products.
            STANDARD_OVERRIDES_FIXED_STANDARD (465847234):
                (Output only) Temporary tier for FIXED_STANDARD when fixed
                standard tier is expired or not configured.
        """
        UNDEFINED_DEFAULT_NETWORK_TIER = 0
        FIXED_STANDARD = 310464328
        PREMIUM = 399530551
        STANDARD = 484642493
        STANDARD_OVERRIDES_FIXED_STANDARD = 465847234

    class VmDnsSetting(proto.Enum):
        r"""[Output Only] Default internal DNS setting used by VMs running in
        this project.

        Values:
            UNDEFINED_VM_DNS_SETTING (0):
                A value indicating that the enum field is not
                set.
            GLOBAL_DEFAULT (345419141):
                No description available.
            UNSPECIFIED_VM_DNS_SETTING (35691930):
                No description available.
            ZONAL_DEFAULT (368475782):
                No description available.
            ZONAL_ONLY (521198951):
                No description available.
        """
        UNDEFINED_VM_DNS_SETTING = 0
        GLOBAL_DEFAULT = 345419141
        UNSPECIFIED_VM_DNS_SETTING = 35691930
        ZONAL_DEFAULT = 368475782
        ZONAL_ONLY = 521198951

    class XpnProjectStatus(proto.Enum):
        r"""[Output Only] The role this project has in a shared VPC
        configuration. Currently, only projects with the host role, which is
        specified by the value HOST, are differentiated.

        Values:
            UNDEFINED_XPN_PROJECT_STATUS (0):
                A value indicating that the enum field is not
                set.
            HOST (2223528):
                No description available.
            UNSPECIFIED_XPN_PROJECT_STATUS (340393257):
                No description available.
        """
        UNDEFINED_XPN_PROJECT_STATUS = 0
        HOST = 2223528
        UNSPECIFIED_XPN_PROJECT_STATUS = 340393257

    common_instance_metadata: "Metadata" = proto.Field(
        proto.MESSAGE,
        number=185794117,
        optional=True,
        message="Metadata",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    default_network_tier: str = proto.Field(
        proto.STRING,
        number=471753361,
        optional=True,
    )
    default_service_account: str = proto.Field(
        proto.STRING,
        number=298712229,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    enabled_features: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=469017467,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    quotas: MutableSequence["Quota"] = proto.RepeatedField(
        proto.MESSAGE,
        number=125341947,
        message="Quota",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    usage_export_location: "UsageExportLocation" = proto.Field(
        proto.MESSAGE,
        number=347543874,
        optional=True,
        message="UsageExportLocation",
    )
    vm_dns_setting: str = proto.Field(
        proto.STRING,
        number=58856370,
        optional=True,
    )
    xpn_project_status: str = proto.Field(
        proto.STRING,
        number=228419265,
        optional=True,
    )


class ProjectsDisableXpnResourceRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        xpn_resource (google.cloud.compute_v1.types.XpnResourceId):
            Service resource (a.k.a service project) ID.

            This field is a member of `oneof`_ ``_xpn_resource``.
    """

    xpn_resource: "XpnResourceId" = proto.Field(
        proto.MESSAGE,
        number=133384631,
        optional=True,
        message="XpnResourceId",
    )


class ProjectsEnableXpnResourceRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        xpn_resource (google.cloud.compute_v1.types.XpnResourceId):
            Service resource (a.k.a service project) ID.

            This field is a member of `oneof`_ ``_xpn_resource``.
    """

    xpn_resource: "XpnResourceId" = proto.Field(
        proto.MESSAGE,
        number=133384631,
        optional=True,
        message="XpnResourceId",
    )


class ProjectsGetXpnResources(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        kind (str):
            [Output Only] Type of resource. Always
            compute#projectsGetXpnResources for lists of service
            resources (a.k.a service projects)

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        resources (MutableSequence[google.cloud.compute_v1.types.XpnResourceId]):
            Service resources (a.k.a service projects)
            attached to this project as their shared VPC
            host.
    """

    @property
    def raw_page(self):
        return self

    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    resources: MutableSequence["XpnResourceId"] = proto.RepeatedField(
        proto.MESSAGE,
        number=164412965,
        message="XpnResourceId",
    )


class ProjectsListXpnHostsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        organization (str):
            Optional organization ID managed by Cloud
            Resource Manager, for which to list shared VPC
            host projects. If not specified, the
            organization will be inferred from the project.

            This field is a member of `oneof`_ ``_organization``.
    """

    organization: str = proto.Field(
        proto.STRING,
        number=105180467,
        optional=True,
    )


class ProjectsSetDefaultNetworkTierRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network_tier (str):
            Default network tier to be set.
            Check the NetworkTier enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_network_tier``.
    """

    class NetworkTier(proto.Enum):
        r"""Default network tier to be set.

        Values:
            UNDEFINED_NETWORK_TIER (0):
                A value indicating that the enum field is not
                set.
            FIXED_STANDARD (310464328):
                Public internet quality with fixed bandwidth.
            PREMIUM (399530551):
                High quality, Google-grade network tier,
                support for all networking products.
            STANDARD (484642493):
                Public internet quality, only limited support
                for other networking products.
            STANDARD_OVERRIDES_FIXED_STANDARD (465847234):
                (Output only) Temporary tier for FIXED_STANDARD when fixed
                standard tier is expired or not configured.
        """
        UNDEFINED_NETWORK_TIER = 0
        FIXED_STANDARD = 310464328
        PREMIUM = 399530551
        STANDARD = 484642493
        STANDARD_OVERRIDES_FIXED_STANDARD = 465847234

    network_tier: str = proto.Field(
        proto.STRING,
        number=517397843,
        optional=True,
    )


class PublicAdvertisedPrefix(proto.Message):
    r"""A public advertised prefix represents an aggregated IP prefix
    or netblock which customers bring to cloud. The IP prefix is a
    single unit of route advertisement and is announced globally to
    the internet.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        dns_verification_ip (str):
            The IPv4 address to be used for reverse DNS
            verification.

            This field is a member of `oneof`_ ``_dns_verification_ip``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a new
            PublicAdvertisedPrefix. An up-to-date
            fingerprint must be provided in order to update
            the PublicAdvertisedPrefix, otherwise the
            request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve a
            PublicAdvertisedPrefix.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource type.
            The server generates this identifier.

            This field is a member of `oneof`_ ``_id``.
        ip_cidr_range (str):
            The IPv4 address range, in CIDR format,
            represented by this public advertised prefix.

            This field is a member of `oneof`_ ``_ip_cidr_range``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#publicAdvertisedPrefix for public advertised
            prefixes.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        public_delegated_prefixs (MutableSequence[google.cloud.compute_v1.types.PublicAdvertisedPrefixPublicDelegatedPrefix]):
            [Output Only] The list of public delegated prefixes that
            exist for this public advertised prefix.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        shared_secret (str):
            [Output Only] The shared secret to be used for reverse DNS
            verification.

            This field is a member of `oneof`_ ``_shared_secret``.
        status (str):
            The status of the public advertised prefix. Possible values
            include: - ``INITIAL``: RPKI validation is complete. -
            ``PTR_CONFIGURED``: User has configured the PTR. -
            ``VALIDATED``: Reverse DNS lookup is successful. -
            ``REVERSE_DNS_LOOKUP_FAILED``: Reverse DNS lookup failed. -
            ``PREFIX_CONFIGURATION_IN_PROGRESS``: The prefix is being
            configured. - ``PREFIX_CONFIGURATION_COMPLETE``: The prefix
            is fully configured. - ``PREFIX_REMOVAL_IN_PROGRESS``: The
            prefix is being removed. Check the Status enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_status``.
    """

    class Status(proto.Enum):
        r"""The status of the public advertised prefix. Possible values include:
        - ``INITIAL``: RPKI validation is complete. - ``PTR_CONFIGURED``:
        User has configured the PTR. - ``VALIDATED``: Reverse DNS lookup is
        successful. - ``REVERSE_DNS_LOOKUP_FAILED``: Reverse DNS lookup
        failed. - ``PREFIX_CONFIGURATION_IN_PROGRESS``: The prefix is being
        configured. - ``PREFIX_CONFIGURATION_COMPLETE``: The prefix is fully
        configured. - ``PREFIX_REMOVAL_IN_PROGRESS``: The prefix is being
        removed.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            INITIAL (518841124):
                RPKI validation is complete.
            PREFIX_CONFIGURATION_COMPLETE (480889551):
                The prefix is fully configured.
            PREFIX_CONFIGURATION_IN_PROGRESS (378550961):
                The prefix is being configured.
            PREFIX_REMOVAL_IN_PROGRESS (284375783):
                The prefix is being removed.
            PTR_CONFIGURED (513497167):
                User has configured the PTR.
            REVERSE_DNS_LOOKUP_FAILED (295755183):
                Reverse DNS lookup failed.
            VALIDATED (66197998):
                Reverse DNS lookup is successful.
        """
        UNDEFINED_STATUS = 0
        INITIAL = 518841124
        PREFIX_CONFIGURATION_COMPLETE = 480889551
        PREFIX_CONFIGURATION_IN_PROGRESS = 378550961
        PREFIX_REMOVAL_IN_PROGRESS = 284375783
        PTR_CONFIGURED = 513497167
        REVERSE_DNS_LOOKUP_FAILED = 295755183
        VALIDATED = 66197998

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    dns_verification_ip: str = proto.Field(
        proto.STRING,
        number=241011381,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    ip_cidr_range: str = proto.Field(
        proto.STRING,
        number=98117322,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    public_delegated_prefixs: MutableSequence[
        "PublicAdvertisedPrefixPublicDelegatedPrefix"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=425811723,
        message="PublicAdvertisedPrefixPublicDelegatedPrefix",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    shared_secret: str = proto.Field(
        proto.STRING,
        number=381932490,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )


class PublicAdvertisedPrefixList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.PublicAdvertisedPrefix]):
            A list of PublicAdvertisedPrefix resources.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#publicAdvertisedPrefix for public advertised
            prefixes.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["PublicAdvertisedPrefix"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="PublicAdvertisedPrefix",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class PublicAdvertisedPrefixPublicDelegatedPrefix(proto.Message):
    r"""Represents a CIDR range which can be used to assign
    addresses.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ip_range (str):
            The IP address range of the public delegated
            prefix

            This field is a member of `oneof`_ ``_ip_range``.
        name (str):
            The name of the public delegated prefix

            This field is a member of `oneof`_ ``_name``.
        project (str):
            The project number of the public delegated
            prefix

            This field is a member of `oneof`_ ``_project``.
        region (str):
            The region of the public delegated prefix if
            it is regional. If absent, the prefix is global.

            This field is a member of `oneof`_ ``_region``.
        status (str):
            The status of the public delegated prefix.
            Possible values are: INITIALIZING: The public
            delegated prefix is being initialized and
            addresses cannot be created yet. ANNOUNCED: The
            public delegated prefix is active.

            This field is a member of `oneof`_ ``_status``.
    """

    ip_range: str = proto.Field(
        proto.STRING,
        number=145092645,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )


class PublicDelegatedPrefix(proto.Message):
    r"""A PublicDelegatedPrefix resource represents an IP block
    within a PublicAdvertisedPrefix that is configured within a
    single cloud scope (global or region). IPs in the block can be
    allocated to resources within that scope. Public delegated
    prefixes may be further broken up into smaller IP blocks in the
    same scope as the parent block.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a new
            PublicDelegatedPrefix. An up-to-date fingerprint
            must be provided in order to update the
            PublicDelegatedPrefix, otherwise the request
            will fail with error 412 conditionNotMet. To see
            the latest fingerprint, make a get() request to
            retrieve a PublicDelegatedPrefix.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource type.
            The server generates this identifier.

            This field is a member of `oneof`_ ``_id``.
        ip_cidr_range (str):
            The IPv4 address range, in CIDR format,
            represented by this public delegated prefix.

            This field is a member of `oneof`_ ``_ip_cidr_range``.
        is_live_migration (bool):
            If true, the prefix will be live migrated.

            This field is a member of `oneof`_ ``_is_live_migration``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#publicDelegatedPrefix for public delegated prefixes.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        parent_prefix (str):
            The URL of parent prefix. Either
            PublicAdvertisedPrefix or PublicDelegatedPrefix.

            This field is a member of `oneof`_ ``_parent_prefix``.
        public_delegated_sub_prefixs (MutableSequence[google.cloud.compute_v1.types.PublicDelegatedPrefixPublicDelegatedSubPrefix]):
            The list of sub public delegated prefixes
            that exist for this public delegated prefix.
        region (str):
            [Output Only] URL of the region where the public delegated
            prefix resides. This field applies only to the region
            resource. You must specify this field as part of the HTTP
            request URL. It is not settable as a field in the request
            body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        status (str):
            [Output Only] The status of the public delegated prefix,
            which can be one of following values: - ``INITIALIZING`` The
            public delegated prefix is being initialized and addresses
            cannot be created yet. - ``READY_TO_ANNOUNCE`` The public
            delegated prefix is a live migration prefix and is active. -
            ``ANNOUNCED`` The public delegated prefix is active. -
            ``DELETING`` The public delegated prefix is being
            deprovsioned. Check the Status enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_status``.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of the public delegated prefix, which can
        be one of following values: - ``INITIALIZING`` The public delegated
        prefix is being initialized and addresses cannot be created yet. -
        ``READY_TO_ANNOUNCE`` The public delegated prefix is a live
        migration prefix and is active. - ``ANNOUNCED`` The public delegated
        prefix is active. - ``DELETING`` The public delegated prefix is
        being deprovsioned.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            ANNOUNCED (365103355):
                The public delegated prefix is active.
            DELETING (528602024):
                The public delegated prefix is being
                deprovsioned.
            INITIALIZING (306588749):
                The public delegated prefix is being
                initialized and addresses cannot be created yet.
            READY_TO_ANNOUNCE (64641265):
                The public delegated prefix is currently
                withdrawn but ready to be announced.
        """
        UNDEFINED_STATUS = 0
        ANNOUNCED = 365103355
        DELETING = 528602024
        INITIALIZING = 306588749
        READY_TO_ANNOUNCE = 64641265

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    ip_cidr_range: str = proto.Field(
        proto.STRING,
        number=98117322,
        optional=True,
    )
    is_live_migration: bool = proto.Field(
        proto.BOOL,
        number=511823856,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    parent_prefix: str = proto.Field(
        proto.STRING,
        number=15233991,
        optional=True,
    )
    public_delegated_sub_prefixs: MutableSequence[
        "PublicDelegatedPrefixPublicDelegatedSubPrefix"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=188940044,
        message="PublicDelegatedPrefixPublicDelegatedSubPrefix",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )


class PublicDelegatedPrefixAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.PublicDelegatedPrefixesScopedList]):
            A list of PublicDelegatedPrefixesScopedList
            resources.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#publicDelegatedPrefixAggregatedList for aggregated
            lists of public delegated prefixes.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "PublicDelegatedPrefixesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="PublicDelegatedPrefixesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class PublicDelegatedPrefixList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.PublicDelegatedPrefix]):
            A list of PublicDelegatedPrefix resources.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#publicDelegatedPrefixList for public delegated
            prefixes.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["PublicDelegatedPrefix"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="PublicDelegatedPrefix",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class PublicDelegatedPrefixPublicDelegatedSubPrefix(proto.Message):
    r"""Represents a sub PublicDelegatedPrefix.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        delegatee_project (str):
            Name of the project scoping this
            PublicDelegatedSubPrefix.

            This field is a member of `oneof`_ ``_delegatee_project``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        ip_cidr_range (str):
            The IPv4 address range, in CIDR format,
            represented by this sub public delegated prefix.

            This field is a member of `oneof`_ ``_ip_cidr_range``.
        is_address (bool):
            Whether the sub prefix is delegated to create
            Address resources in the delegatee project.

            This field is a member of `oneof`_ ``_is_address``.
        name (str):
            The name of the sub public delegated prefix.

            This field is a member of `oneof`_ ``_name``.
        region (str):
            [Output Only] The region of the sub public delegated prefix
            if it is regional. If absent, the sub prefix is global.

            This field is a member of `oneof`_ ``_region``.
        status (str):
            [Output Only] The status of the sub public delegated prefix.
            Check the Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of the sub public delegated prefix.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                No description available.
            INACTIVE (270421099):
                No description available.
        """
        UNDEFINED_STATUS = 0
        ACTIVE = 314733318
        INACTIVE = 270421099

    delegatee_project: str = proto.Field(
        proto.STRING,
        number=414860634,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    ip_cidr_range: str = proto.Field(
        proto.STRING,
        number=98117322,
        optional=True,
    )
    is_address: bool = proto.Field(
        proto.BOOL,
        number=352617951,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )


class PublicDelegatedPrefixesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        public_delegated_prefixes (MutableSequence[google.cloud.compute_v1.types.PublicDelegatedPrefix]):
            [Output Only] A list of PublicDelegatedPrefixes contained in
            this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of public delegated prefixes when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    public_delegated_prefixes: MutableSequence[
        "PublicDelegatedPrefix"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=315261206,
        message="PublicDelegatedPrefix",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class Quota(proto.Message):
    r"""A quotas entry.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        limit (float):
            [Output Only] Quota limit for this metric.

            This field is a member of `oneof`_ ``_limit``.
        metric (str):
            [Output Only] Name of the quota metric. Check the Metric
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_metric``.
        owner (str):
            [Output Only] Owning resource. This is the resource on which
            this quota is applied.

            This field is a member of `oneof`_ ``_owner``.
        usage (float):
            [Output Only] Current usage of this metric.

            This field is a member of `oneof`_ ``_usage``.
    """

    class Metric(proto.Enum):
        r"""[Output Only] Name of the quota metric.

        Values:
            UNDEFINED_METRIC (0):
                A value indicating that the enum field is not
                set.
            A2_CPUS (153206585):
                No description available.
            AFFINITY_GROUPS (108303563):
                No description available.
            AUTOSCALERS (471248988):
                No description available.
            BACKEND_BUCKETS (137626846):
                No description available.
            BACKEND_SERVICES (269623753):
                No description available.
            C2D_CPUS (508182517):
                No description available.
            C2_CPUS (317601211):
                No description available.
            C3_CPUS (346230362):
                No description available.
            COMMITMENTS (456141790):
                No description available.
            COMMITTED_A2_CPUS (59330902):
                No description available.
            COMMITTED_C2D_CPUS (282390904):
                No description available.
            COMMITTED_C2_CPUS (223725528):
                No description available.
            COMMITTED_C3_CPUS (252354679):
                No description available.
            COMMITTED_CPUS (292394702):
                No description available.
            COMMITTED_E2_CPUS (388120154):
                No description available.
            COMMITTED_LICENSES (357606869):
                No description available.
            COMMITTED_LOCAL_SSD_TOTAL_GB (308393480):
                No description available.
            COMMITTED_M3_CPUS (585985):
                No description available.
            COMMITTED_MEMORY_OPTIMIZED_CPUS (489057886):
                No description available.
            COMMITTED_N2A_CPUS (40064304):
                No description available.
            COMMITTED_N2D_CPUS (125951757):
                No description available.
            COMMITTED_N2_CPUS (322589603):
                No description available.
            COMMITTED_NVIDIA_A100_80GB_GPUS (464326565):
                No description available.
            COMMITTED_NVIDIA_A100_GPUS (375799445):
                No description available.
            COMMITTED_NVIDIA_K80_GPUS (3857188):
                No description available.
            COMMITTED_NVIDIA_P100_GPUS (107528100):
                No description available.
            COMMITTED_NVIDIA_P4_GPUS (347952897):
                No description available.
            COMMITTED_NVIDIA_T4_GPUS (139871237):
                No description available.
            COMMITTED_NVIDIA_V100_GPUS (219562):
                No description available.
            COMMITTED_T2A_CPUS (296378986):
                No description available.
            COMMITTED_T2D_CPUS (382266439):
                No description available.
            CPUS (2075595):
                Guest CPUs
            CPUS_ALL_REGIONS (470911149):
                No description available.
            DISKS_TOTAL_GB (353520543):
                No description available.
            E2_CPUS (481995837):
                No description available.
            EXTERNAL_MANAGED_FORWARDING_RULES (150790089):
                No description available.
            EXTERNAL_NETWORK_LB_FORWARDING_RULES (374298265):
                No description available.
            EXTERNAL_PROTOCOL_FORWARDING_RULES (63478888):
                No description available.
            EXTERNAL_VPN_GATEWAYS (272457134):
                No description available.
            FIREWALLS (374485843):
                No description available.
            FORWARDING_RULES (432668949):
                No description available.
            GLOBAL_EXTERNAL_MANAGED_BACKEND_SERVICES (164566753):
                No description available.
            GLOBAL_EXTERNAL_MANAGED_FORWARDING_RULES (327611949):
                No description available.
            GLOBAL_EXTERNAL_PROXY_LB_BACKEND_SERVICES (400256169):
                No description available.
            GLOBAL_INTERNAL_ADDRESSES (42738332):
                No description available.
            GLOBAL_INTERNAL_MANAGED_BACKEND_SERVICES (256608303):
                No description available.
            GLOBAL_INTERNAL_TRAFFIC_DIRECTOR_BACKEND_SERVICES (323514196):
                No description available.
            GPUS_ALL_REGIONS (39387177):
                No description available.
            HEALTH_CHECKS (289347502):
                No description available.
            IMAGES (15562360):
                No description available.
            INSTANCES (131337822):
                No description available.
            INSTANCE_GROUPS (355919038):
                No description available.
            INSTANCE_GROUP_MANAGERS (101798192):
                No description available.
            INSTANCE_TEMPLATES (226188271):
                No description available.
            INTERCONNECTS (415204741):
                No description available.
            INTERCONNECT_ATTACHMENTS_PER_REGION (159968086):
                No description available.
            INTERCONNECT_ATTACHMENTS_TOTAL_MBPS (425090419):
                No description available.
            INTERCONNECT_TOTAL_GBPS (285341866):
                No description available.
            INTERNAL_ADDRESSES (197899392):
                No description available.
            INTERNAL_TRAFFIC_DIRECTOR_FORWARDING_RULES (266433668):
                No description available.
            IN_PLACE_SNAPSHOTS (151359133):
                No description available.
            IN_USE_ADDRESSES (402125072):
                No description available.
            IN_USE_BACKUP_SCHEDULES (32786705):
                No description available.
            IN_USE_SNAPSHOT_SCHEDULES (462104083):
                No description available.
            LOCAL_SSD_TOTAL_GB (330878021):
                No description available.
            M1_CPUS (37203366):
                No description available.
            M2_CPUS (65832517):
                No description available.
            M3_CPUS (94461668):
                No description available.
            MACHINE_IMAGES (446986640):
                No description available.
            N2A_CPUS (265855917):
                No description available.
            N2D_CPUS (351743370):
                No description available.
            N2_CPUS (416465286):
                No description available.
            NETWORKS (485481477):
                No description available.
            NETWORK_ATTACHMENTS (149028575):
                No description available.
            NETWORK_ENDPOINT_GROUPS (102144909):
                No description available.
            NETWORK_FIREWALL_POLICIES (101117374):
                No description available.
            NODE_GROUPS (24624817):
                No description available.
            NODE_TEMPLATES (474896668):
                No description available.
            NVIDIA_A100_80GB_GPUS (286389320):
                No description available.
            NVIDIA_A100_GPUS (504872978):
                No description available.
            NVIDIA_K80_GPUS (163886599):
                No description available.
            NVIDIA_P100_GPUS (236601633):
                No description available.
            NVIDIA_P100_VWS_GPUS (213970574):
                No description available.
            NVIDIA_P4_GPUS (283841470):
                No description available.
            NVIDIA_P4_VWS_GPUS (528296619):
                No description available.
            NVIDIA_T4_GPUS (75759810):
                No description available.
            NVIDIA_T4_VWS_GPUS (319813039):
                No description available.
            NVIDIA_V100_GPUS (129293095):
                No description available.
            PACKET_MIRRORINGS (15578407):
                No description available.
            PD_EXTREME_TOTAL_PROVISIONED_IOPS (69593965):
                No description available.
            PREEMPTIBLE_CPUS (251184841):
                No description available.
            PREEMPTIBLE_LOCAL_SSD_GB (260819336):
                No description available.
            PREEMPTIBLE_NVIDIA_A100_80GB_GPUS (151942410):
                No description available.
            PREEMPTIBLE_NVIDIA_A100_GPUS (68832784):
                No description available.
            PREEMPTIBLE_NVIDIA_K80_GPUS (374960201):
                No description available.
            PREEMPTIBLE_NVIDIA_P100_GPUS (337432351):
                No description available.
            PREEMPTIBLE_NVIDIA_P100_VWS_GPUS (313544076):
                No description available.
            PREEMPTIBLE_NVIDIA_P4_GPUS (429197628):
                No description available.
            PREEMPTIBLE_NVIDIA_P4_VWS_GPUS (252981545):
                No description available.
            PREEMPTIBLE_NVIDIA_T4_GPUS (221115968):
                No description available.
            PREEMPTIBLE_NVIDIA_T4_VWS_GPUS (44497965):
                No description available.
            PREEMPTIBLE_NVIDIA_V100_GPUS (230123813):
                No description available.
            PSC_ILB_CONSUMER_FORWARDING_RULES_PER_PRODUCER_NETWORK (231164291):
                No description available.
            PSC_INTERNAL_LB_FORWARDING_RULES (169005435):
                No description available.
            PUBLIC_ADVERTISED_PREFIXES (471371980):
                No description available.
            PUBLIC_DELEGATED_PREFIXES (532465974):
                No description available.
            REGIONAL_AUTOSCALERS (29363772):
                No description available.
            REGIONAL_EXTERNAL_MANAGED_BACKEND_SERVICES (4240989):
                No description available.
            REGIONAL_EXTERNAL_NETWORK_LB_BACKEND_SERVICES (409564525):
                No description available.
            REGIONAL_INSTANCE_GROUP_MANAGERS (37543696):
                No description available.
            REGIONAL_INTERNAL_LB_BACKEND_SERVICES (137983760):
                No description available.
            REGIONAL_INTERNAL_MANAGED_BACKEND_SERVICES (96282539):
                No description available.
            RESERVATIONS (32644647):
                No description available.
            RESOURCE_POLICIES (83955297):
                No description available.
            ROUTERS (493018666):
                No description available.
            ROUTES (275680074):
                No description available.
            SECURITY_POLICIES (189518703):
                No description available.
            SECURITY_POLICIES_PER_REGION (249041734):
                No description available.
            SECURITY_POLICY_CEVAL_RULES (470815689):
                No description available.
            SECURITY_POLICY_RULES (203549225):
                No description available.
            SECURITY_POLICY_RULES_PER_REGION (126510156):
                No description available.
            SERVICE_ATTACHMENTS (471521510):
                No description available.
            SNAPSHOTS (343405327):
                The total number of snapshots allowed for a
                single project.
            SSD_TOTAL_GB (161732561):
                No description available.
            SSL_CERTIFICATES (378372399):
                No description available.
            STATIC_ADDRESSES (93624049):
                No description available.
            STATIC_BYOIP_ADDRESSES (275809649):
                No description available.
            STATIC_EXTERNAL_IPV6_ADDRESS_RANGES (472346774):
                No description available.
            SUBNETWORKS (421330469):
                No description available.
            T2A_CPUS (522170599):
                No description available.
            T2D_CPUS (71187140):
                No description available.
            TARGET_HTTPS_PROXIES (219522506):
                No description available.
            TARGET_HTTP_PROXIES (164117155):
                No description available.
            TARGET_INSTANCES (284519728):
                No description available.
            TARGET_POOLS (348261257):
                No description available.
            TARGET_SSL_PROXIES (159216235):
                No description available.
            TARGET_TCP_PROXIES (182243136):
                No description available.
            TARGET_VPN_GATEWAYS (75029928):
                No description available.
            URL_MAPS (378660743):
                No description available.
            VPN_GATEWAYS (35620282):
                No description available.
            VPN_TUNNELS (104327296):
                No description available.
            XPN_SERVICE_PROJECTS (95191981):
                No description available.
        """
        UNDEFINED_METRIC = 0
        A2_CPUS = 153206585
        AFFINITY_GROUPS = 108303563
        AUTOSCALERS = 471248988
        BACKEND_BUCKETS = 137626846
        BACKEND_SERVICES = 269623753
        C2D_CPUS = 508182517
        C2_CPUS = 317601211
        C3_CPUS = 346230362
        COMMITMENTS = 456141790
        COMMITTED_A2_CPUS = 59330902
        COMMITTED_C2D_CPUS = 282390904
        COMMITTED_C2_CPUS = 223725528
        COMMITTED_C3_CPUS = 252354679
        COMMITTED_CPUS = 292394702
        COMMITTED_E2_CPUS = 388120154
        COMMITTED_LICENSES = 357606869
        COMMITTED_LOCAL_SSD_TOTAL_GB = 308393480
        COMMITTED_M3_CPUS = 585985
        COMMITTED_MEMORY_OPTIMIZED_CPUS = 489057886
        COMMITTED_N2A_CPUS = 40064304
        COMMITTED_N2D_CPUS = 125951757
        COMMITTED_N2_CPUS = 322589603
        COMMITTED_NVIDIA_A100_80GB_GPUS = 464326565
        COMMITTED_NVIDIA_A100_GPUS = 375799445
        COMMITTED_NVIDIA_K80_GPUS = 3857188
        COMMITTED_NVIDIA_P100_GPUS = 107528100
        COMMITTED_NVIDIA_P4_GPUS = 347952897
        COMMITTED_NVIDIA_T4_GPUS = 139871237
        COMMITTED_NVIDIA_V100_GPUS = 219562
        COMMITTED_T2A_CPUS = 296378986
        COMMITTED_T2D_CPUS = 382266439
        CPUS = 2075595
        CPUS_ALL_REGIONS = 470911149
        DISKS_TOTAL_GB = 353520543
        E2_CPUS = 481995837
        EXTERNAL_MANAGED_FORWARDING_RULES = 150790089
        EXTERNAL_NETWORK_LB_FORWARDING_RULES = 374298265
        EXTERNAL_PROTOCOL_FORWARDING_RULES = 63478888
        EXTERNAL_VPN_GATEWAYS = 272457134
        FIREWALLS = 374485843
        FORWARDING_RULES = 432668949
        GLOBAL_EXTERNAL_MANAGED_BACKEND_SERVICES = 164566753
        GLOBAL_EXTERNAL_MANAGED_FORWARDING_RULES = 327611949
        GLOBAL_EXTERNAL_PROXY_LB_BACKEND_SERVICES = 400256169
        GLOBAL_INTERNAL_ADDRESSES = 42738332
        GLOBAL_INTERNAL_MANAGED_BACKEND_SERVICES = 256608303
        GLOBAL_INTERNAL_TRAFFIC_DIRECTOR_BACKEND_SERVICES = 323514196
        GPUS_ALL_REGIONS = 39387177
        HEALTH_CHECKS = 289347502
        IMAGES = 15562360
        INSTANCES = 131337822
        INSTANCE_GROUPS = 355919038
        INSTANCE_GROUP_MANAGERS = 101798192
        INSTANCE_TEMPLATES = 226188271
        INTERCONNECTS = 415204741
        INTERCONNECT_ATTACHMENTS_PER_REGION = 159968086
        INTERCONNECT_ATTACHMENTS_TOTAL_MBPS = 425090419
        INTERCONNECT_TOTAL_GBPS = 285341866
        INTERNAL_ADDRESSES = 197899392
        INTERNAL_TRAFFIC_DIRECTOR_FORWARDING_RULES = 266433668
        IN_PLACE_SNAPSHOTS = 151359133
        IN_USE_ADDRESSES = 402125072
        IN_USE_BACKUP_SCHEDULES = 32786705
        IN_USE_SNAPSHOT_SCHEDULES = 462104083
        LOCAL_SSD_TOTAL_GB = 330878021
        M1_CPUS = 37203366
        M2_CPUS = 65832517
        M3_CPUS = 94461668
        MACHINE_IMAGES = 446986640
        N2A_CPUS = 265855917
        N2D_CPUS = 351743370
        N2_CPUS = 416465286
        NETWORKS = 485481477
        NETWORK_ATTACHMENTS = 149028575
        NETWORK_ENDPOINT_GROUPS = 102144909
        NETWORK_FIREWALL_POLICIES = 101117374
        NODE_GROUPS = 24624817
        NODE_TEMPLATES = 474896668
        NVIDIA_A100_80GB_GPUS = 286389320
        NVIDIA_A100_GPUS = 504872978
        NVIDIA_K80_GPUS = 163886599
        NVIDIA_P100_GPUS = 236601633
        NVIDIA_P100_VWS_GPUS = 213970574
        NVIDIA_P4_GPUS = 283841470
        NVIDIA_P4_VWS_GPUS = 528296619
        NVIDIA_T4_GPUS = 75759810
        NVIDIA_T4_VWS_GPUS = 319813039
        NVIDIA_V100_GPUS = 129293095
        PACKET_MIRRORINGS = 15578407
        PD_EXTREME_TOTAL_PROVISIONED_IOPS = 69593965
        PREEMPTIBLE_CPUS = 251184841
        PREEMPTIBLE_LOCAL_SSD_GB = 260819336
        PREEMPTIBLE_NVIDIA_A100_80GB_GPUS = 151942410
        PREEMPTIBLE_NVIDIA_A100_GPUS = 68832784
        PREEMPTIBLE_NVIDIA_K80_GPUS = 374960201
        PREEMPTIBLE_NVIDIA_P100_GPUS = 337432351
        PREEMPTIBLE_NVIDIA_P100_VWS_GPUS = 313544076
        PREEMPTIBLE_NVIDIA_P4_GPUS = 429197628
        PREEMPTIBLE_NVIDIA_P4_VWS_GPUS = 252981545
        PREEMPTIBLE_NVIDIA_T4_GPUS = 221115968
        PREEMPTIBLE_NVIDIA_T4_VWS_GPUS = 44497965
        PREEMPTIBLE_NVIDIA_V100_GPUS = 230123813
        PSC_ILB_CONSUMER_FORWARDING_RULES_PER_PRODUCER_NETWORK = 231164291
        PSC_INTERNAL_LB_FORWARDING_RULES = 169005435
        PUBLIC_ADVERTISED_PREFIXES = 471371980
        PUBLIC_DELEGATED_PREFIXES = 532465974
        REGIONAL_AUTOSCALERS = 29363772
        REGIONAL_EXTERNAL_MANAGED_BACKEND_SERVICES = 4240989
        REGIONAL_EXTERNAL_NETWORK_LB_BACKEND_SERVICES = 409564525
        REGIONAL_INSTANCE_GROUP_MANAGERS = 37543696
        REGIONAL_INTERNAL_LB_BACKEND_SERVICES = 137983760
        REGIONAL_INTERNAL_MANAGED_BACKEND_SERVICES = 96282539
        RESERVATIONS = 32644647
        RESOURCE_POLICIES = 83955297
        ROUTERS = 493018666
        ROUTES = 275680074
        SECURITY_POLICIES = 189518703
        SECURITY_POLICIES_PER_REGION = 249041734
        SECURITY_POLICY_CEVAL_RULES = 470815689
        SECURITY_POLICY_RULES = 203549225
        SECURITY_POLICY_RULES_PER_REGION = 126510156
        SERVICE_ATTACHMENTS = 471521510
        SNAPSHOTS = 343405327
        SSD_TOTAL_GB = 161732561
        SSL_CERTIFICATES = 378372399
        STATIC_ADDRESSES = 93624049
        STATIC_BYOIP_ADDRESSES = 275809649
        STATIC_EXTERNAL_IPV6_ADDRESS_RANGES = 472346774
        SUBNETWORKS = 421330469
        T2A_CPUS = 522170599
        T2D_CPUS = 71187140
        TARGET_HTTPS_PROXIES = 219522506
        TARGET_HTTP_PROXIES = 164117155
        TARGET_INSTANCES = 284519728
        TARGET_POOLS = 348261257
        TARGET_SSL_PROXIES = 159216235
        TARGET_TCP_PROXIES = 182243136
        TARGET_VPN_GATEWAYS = 75029928
        URL_MAPS = 378660743
        VPN_GATEWAYS = 35620282
        VPN_TUNNELS = 104327296
        XPN_SERVICE_PROJECTS = 95191981

    limit: float = proto.Field(
        proto.DOUBLE,
        number=102976443,
        optional=True,
    )
    metric: str = proto.Field(
        proto.STRING,
        number=533067184,
        optional=True,
    )
    owner: str = proto.Field(
        proto.STRING,
        number=106164915,
        optional=True,
    )
    usage: float = proto.Field(
        proto.DOUBLE,
        number=111574433,
        optional=True,
    )


class QuotaExceededInfo(proto.Message):
    r"""Additional details for quota exceeded error for resource
    quota.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        dimensions (MutableMapping[str, str]):
            The map holding related quota dimensions.
        limit (float):
            Current effective quota limit. The limit's
            unit depends on the quota type or metric.

            This field is a member of `oneof`_ ``_limit``.
        limit_name (str):
            The name of the quota limit.

            This field is a member of `oneof`_ ``_limit_name``.
        metric_name (str):
            The Compute Engine quota metric name.

            This field is a member of `oneof`_ ``_metric_name``.
    """

    dimensions: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=414334925,
    )
    limit: float = proto.Field(
        proto.DOUBLE,
        number=102976443,
        optional=True,
    )
    limit_name: str = proto.Field(
        proto.STRING,
        number=398197903,
        optional=True,
    )
    metric_name: str = proto.Field(
        proto.STRING,
        number=409881530,
        optional=True,
    )


class RawDisk(proto.Message):
    r"""The parameters of the raw disk image.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        container_type (str):
            The format used to encode and transmit the
            block device, which should be TAR. This is just
            a container and transmission format and not a
            runtime format. Provided by the client when the
            disk image is created. Check the ContainerType
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_container_type``.
        sha1_checksum (str):
            [Deprecated] This field is deprecated. An optional SHA1
            checksum of the disk image before unpackaging provided by
            the client when the disk image is created.

            This field is a member of `oneof`_ ``_sha1_checksum``.
        source (str):
            The full Google Cloud Storage URL where the raw disk image
            archive is stored. The following are valid formats for the
            URL: -
            https://storage.googleapis.com/bucket_name/image_archive_name
            - https://storage.googleapis.com/bucket_name/folder_name/
            image_archive_name In order to create an image, you must
            provide the full or partial URL of one of the following: -
            The rawDisk.source URL - The sourceDisk URL - The
            sourceImage URL - The sourceSnapshot URL

            This field is a member of `oneof`_ ``_source``.
    """

    class ContainerType(proto.Enum):
        r"""The format used to encode and transmit the block device,
        which should be TAR. This is just a container and transmission
        format and not a runtime format. Provided by the client when the
        disk image is created.

        Values:
            UNDEFINED_CONTAINER_TYPE (0):
                A value indicating that the enum field is not
                set.
            TAR (82821):
                No description available.
        """
        UNDEFINED_CONTAINER_TYPE = 0
        TAR = 82821

    container_type: str = proto.Field(
        proto.STRING,
        number=318809144,
        optional=True,
    )
    sha1_checksum: str = proto.Field(
        proto.STRING,
        number=314444349,
        optional=True,
    )
    source: str = proto.Field(
        proto.STRING,
        number=177235995,
        optional=True,
    )


class RecreateInstancesInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    InstanceGroupManagers.RecreateInstances. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group.
        instance_group_managers_recreate_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersRecreateInstancesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_recreate_instances_request_resource: "InstanceGroupManagersRecreateInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=21405952,
        message="InstanceGroupManagersRecreateInstancesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class RecreateInstancesRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.RecreateInstances. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            Name of the managed instance group.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        region_instance_group_managers_recreate_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersRecreateRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_managers_recreate_request_resource: "RegionInstanceGroupManagersRecreateRequest" = proto.Field(
        proto.MESSAGE,
        number=170999316,
        message="RegionInstanceGroupManagersRecreateRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class Reference(proto.Message):
    r"""Represents a reference to a resource.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        kind (str):
            [Output Only] Type of the resource. Always compute#reference
            for references.

            This field is a member of `oneof`_ ``_kind``.
        reference_type (str):
            A description of the reference type with no implied
            semantics. Possible values include: 1. MEMBER_OF

            This field is a member of `oneof`_ ``_reference_type``.
        referrer (str):
            URL of the resource which refers to the
            target.

            This field is a member of `oneof`_ ``_referrer``.
        target (str):
            URL of the resource to which this reference
            points.

            This field is a member of `oneof`_ ``_target``.
    """

    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    reference_type: str = proto.Field(
        proto.STRING,
        number=247521198,
        optional=True,
    )
    referrer: str = proto.Field(
        proto.STRING,
        number=351173663,
        optional=True,
    )
    target: str = proto.Field(
        proto.STRING,
        number=192835985,
        optional=True,
    )


class Region(proto.Message):
    r"""Represents a Region resource. A region is a geographical area
    where a resource is located. For more information, read Regions
    and Zones.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        deprecated (google.cloud.compute_v1.types.DeprecationStatus):
            [Output Only] The deprecation status associated with this
            region.

            This field is a member of `oneof`_ ``_deprecated``.
        description (str):
            [Output Only] Textual description of the resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always compute#region
            for regions.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            [Output Only] Name of the resource.

            This field is a member of `oneof`_ ``_name``.
        quotas (MutableSequence[google.cloud.compute_v1.types.Quota]):
            [Output Only] Quotas assigned to this region.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        status (str):
            [Output Only] Status of the region, either UP or DOWN. Check
            the Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        supports_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_supports_pzs``.
        zones (MutableSequence[str]):
            [Output Only] A list of zones available in this region, in
            the form of resource URLs.
    """

    class Status(proto.Enum):
        r"""[Output Only] Status of the region, either UP or DOWN.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            DOWN (2104482):
                No description available.
            UP (2715):
                No description available.
        """
        UNDEFINED_STATUS = 0
        DOWN = 2104482
        UP = 2715

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    deprecated: "DeprecationStatus" = proto.Field(
        proto.MESSAGE,
        number=515138995,
        optional=True,
        message="DeprecationStatus",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    quotas: MutableSequence["Quota"] = proto.RepeatedField(
        proto.MESSAGE,
        number=125341947,
        message="Quota",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    supports_pzs: bool = proto.Field(
        proto.BOOL,
        number=83983214,
        optional=True,
    )
    zones: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=116085319,
    )


class RegionAutoscalerList(proto.Message):
    r"""Contains a list of autoscalers.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Autoscaler]):
            A list of Autoscaler resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Autoscaler"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Autoscaler",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class RegionDiskTypeList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.DiskType]):
            A list of DiskType resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#regionDiskTypeList for region disk types.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["DiskType"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="DiskType",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class RegionDisksAddResourcePoliciesRequest(proto.Message):
    r"""

    Attributes:
        resource_policies (MutableSequence[str]):
            Resource policies to be added to this disk.
    """

    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )


class RegionDisksRemoveResourcePoliciesRequest(proto.Message):
    r"""

    Attributes:
        resource_policies (MutableSequence[str]):
            Resource policies to be removed from this
            disk.
    """

    resource_policies: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=22220385,
    )


class RegionDisksResizeRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        size_gb (int):
            The new size of the regional persistent disk,
            which is specified in GB.

            This field is a member of `oneof`_ ``_size_gb``.
    """

    size_gb: int = proto.Field(
        proto.INT64,
        number=494929369,
        optional=True,
    )


class RegionInstanceGroupList(proto.Message):
    r"""Contains a list of InstanceGroup resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.InstanceGroup]):
            A list of InstanceGroup resources.
        kind (str):
            The resource type.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["InstanceGroup"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InstanceGroup",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class RegionInstanceGroupManagerDeleteInstanceConfigReq(proto.Message):
    r"""RegionInstanceGroupManagers.deletePerInstanceConfigs

    Attributes:
        names (MutableSequence[str]):
            The list of instance names for which we want
            to delete per-instance configs on this managed
            instance group.
    """

    names: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=104585032,
    )


class RegionInstanceGroupManagerList(proto.Message):
    r"""Contains a list of managed instance groups.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.InstanceGroupManager]):
            A list of InstanceGroupManager resources.
        kind (str):
            [Output Only] The resource type, which is always
            compute#instanceGroupManagerList for a list of managed
            instance groups that exist in th regional scope.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["InstanceGroupManager"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InstanceGroupManager",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class RegionInstanceGroupManagerPatchInstanceConfigReq(proto.Message):
    r"""RegionInstanceGroupManagers.patchPerInstanceConfigs

    Attributes:
        per_instance_configs (MutableSequence[google.cloud.compute_v1.types.PerInstanceConfig]):
            The list of per-instance configurations to
            insert or patch on this managed instance group.
    """

    per_instance_configs: MutableSequence["PerInstanceConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=526265001,
        message="PerInstanceConfig",
    )


class RegionInstanceGroupManagerUpdateInstanceConfigReq(proto.Message):
    r"""RegionInstanceGroupManagers.updatePerInstanceConfigs

    Attributes:
        per_instance_configs (MutableSequence[google.cloud.compute_v1.types.PerInstanceConfig]):
            The list of per-instance configurations to
            insert or patch on this managed instance group.
    """

    per_instance_configs: MutableSequence["PerInstanceConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=526265001,
        message="PerInstanceConfig",
    )


class RegionInstanceGroupManagersAbandonInstancesRequest(proto.Message):
    r"""

    Attributes:
        instances (MutableSequence[str]):
            The URLs of one or more instances to abandon. This can be a
            full URL or a partial URL, such as
            zones/[ZONE]/instances/[INSTANCE_NAME].
    """

    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )


class RegionInstanceGroupManagersApplyUpdatesRequest(proto.Message):
    r"""RegionInstanceGroupManagers.applyUpdatesToInstances

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        all_instances (bool):
            Flag to update all instances instead of
            specified list of “instances”. If the flag is
            set to true then the instances may not be
            specified in the request.

            This field is a member of `oneof`_ ``_all_instances``.
        instances (MutableSequence[str]):
            The list of URLs of one or more instances for which you want
            to apply updates. Each URL can be a full URL or a partial
            URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].
        minimal_action (str):
            The minimal action that you want to perform
            on each instance during the update: - REPLACE:
            At minimum, delete the instance and create it
            again. - RESTART: Stop the instance and start it
            again. - REFRESH: Do not stop the instance. -
            NONE: Do not disrupt the instance at all. By
            default, the minimum action is NONE. If your
            update requires a more disruptive action than
            you set with this flag, the necessary action is
            performed to execute the update. Check the
            MinimalAction enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_minimal_action``.
        most_disruptive_allowed_action (str):
            The most disruptive action that you want to
            perform on each instance during the update: -
            REPLACE: Delete the instance and create it
            again. - RESTART: Stop the instance and start it
            again. - REFRESH: Do not stop the instance. -
            NONE: Do not disrupt the instance at all. By
            default, the most disruptive allowed action is
            REPLACE. If your update requires a more
            disruptive action than you set with this flag,
            the update request will fail. Check the
            MostDisruptiveAllowedAction enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_most_disruptive_allowed_action``.
    """

    class MinimalAction(proto.Enum):
        r"""The minimal action that you want to perform on each instance
        during the update: - REPLACE: At minimum, delete the instance
        and create it again. - RESTART: Stop the instance and start it
        again. - REFRESH: Do not stop the instance. - NONE: Do not
        disrupt the instance at all. By default, the minimum action is
        NONE. If your update requires a more disruptive action than you
        set with this flag, the necessary action is performed to execute
        the update. Additional supported values which may be not listed
        in the enum directly due to technical reasons: NONE
        REFRESH
        REPLACE
        RESTART

        Values:
            UNDEFINED_MINIMAL_ACTION (0):
                A value indicating that the enum field is not
                set.
        """
        UNDEFINED_MINIMAL_ACTION = 0

    class MostDisruptiveAllowedAction(proto.Enum):
        r"""The most disruptive action that you want to perform on each
        instance during the update: - REPLACE: Delete the instance and
        create it again. - RESTART: Stop the instance and start it
        again. - REFRESH: Do not stop the instance. - NONE: Do not
        disrupt the instance at all. By default, the most disruptive
        allowed action is REPLACE. If your update requires a more
        disruptive action than you set with this flag, the update
        request will fail. Additional supported values which may be not
        listed in the enum directly due to technical reasons: NONE
        REFRESH
        REPLACE
        RESTART

        Values:
            UNDEFINED_MOST_DISRUPTIVE_ALLOWED_ACTION (0):
                A value indicating that the enum field is not
                set.
        """
        UNDEFINED_MOST_DISRUPTIVE_ALLOWED_ACTION = 0

    all_instances: bool = proto.Field(
        proto.BOOL,
        number=403676512,
        optional=True,
    )
    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )
    minimal_action: str = proto.Field(
        proto.STRING,
        number=270567060,
        optional=True,
    )
    most_disruptive_allowed_action: str = proto.Field(
        proto.STRING,
        number=66103053,
        optional=True,
    )


class RegionInstanceGroupManagersCreateInstancesRequest(proto.Message):
    r"""RegionInstanceGroupManagers.createInstances

    Attributes:
        instances (MutableSequence[google.cloud.compute_v1.types.PerInstanceConfig]):
            [Required] List of specifications of per-instance configs.
    """

    instances: MutableSequence["PerInstanceConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=29097598,
        message="PerInstanceConfig",
    )


class RegionInstanceGroupManagersDeleteInstancesRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instances (MutableSequence[str]):
            The URLs of one or more instances to delete. This can be a
            full URL or a partial URL, such as
            zones/[ZONE]/instances/[INSTANCE_NAME].
        skip_instances_on_validation_error (bool):
            Specifies whether the request should proceed despite the
            inclusion of instances that are not members of the group or
            that are already in the process of being deleted or
            abandoned. If this field is set to ``false`` and such an
            instance is specified in the request, the operation fails.
            The operation always fails if the request contains a
            malformed instance URL or a reference to an instance that
            exists in a zone or region other than the group's zone or
            region.

            This field is a member of `oneof`_ ``_skip_instances_on_validation_error``.
    """

    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )
    skip_instances_on_validation_error: bool = proto.Field(
        proto.BOOL,
        number=40631073,
        optional=True,
    )


class RegionInstanceGroupManagersListErrorsResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        items (MutableSequence[google.cloud.compute_v1.types.InstanceManagedByIgmError]):
            [Output Only] The list of errors of the managed instance
            group.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
    """

    @property
    def raw_page(self):
        return self

    items: MutableSequence["InstanceManagedByIgmError"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InstanceManagedByIgmError",
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )


class RegionInstanceGroupManagersListInstanceConfigsResp(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        items (MutableSequence[google.cloud.compute_v1.types.PerInstanceConfig]):
            [Output Only] The list of PerInstanceConfig.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    items: MutableSequence["PerInstanceConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="PerInstanceConfig",
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class RegionInstanceGroupManagersListInstancesResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        managed_instances (MutableSequence[google.cloud.compute_v1.types.ManagedInstance]):
            A list of managed instances.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
    """

    @property
    def raw_page(self):
        return self

    managed_instances: MutableSequence["ManagedInstance"] = proto.RepeatedField(
        proto.MESSAGE,
        number=336219614,
        message="ManagedInstance",
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )


class RegionInstanceGroupManagersRecreateRequest(proto.Message):
    r"""

    Attributes:
        instances (MutableSequence[str]):
            The URLs of one or more instances to recreate. This can be a
            full URL or a partial URL, such as
            zones/[ZONE]/instances/[INSTANCE_NAME].
    """

    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )


class RegionInstanceGroupManagersSetTargetPoolsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        fingerprint (str):
            Fingerprint of the target pools information,
            which is a hash of the contents. This field is
            used for optimistic locking when you update the
            target pool entries. This field is optional.

            This field is a member of `oneof`_ ``_fingerprint``.
        target_pools (MutableSequence[str]):
            The URL of all TargetPool resources to which
            instances in the instanceGroup field are added.
            The target pools automatically apply to all of
            the instances in the managed instance group.
    """

    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    target_pools: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=336072617,
    )


class RegionInstanceGroupManagersSetTemplateRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_template (str):
            URL of the InstanceTemplate resource from
            which all new instances will be created.

            This field is a member of `oneof`_ ``_instance_template``.
    """

    instance_template: str = proto.Field(
        proto.STRING,
        number=309248228,
        optional=True,
    )


class RegionInstanceGroupsListInstances(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.InstanceWithNamedPorts]):
            A list of InstanceWithNamedPorts resources.
        kind (str):
            The resource type.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["InstanceWithNamedPorts"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="InstanceWithNamedPorts",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class RegionInstanceGroupsListInstancesRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_state (str):
            Instances in which state should be returned.
            Valid options are: 'ALL', 'RUNNING'. By default,
            it lists all instances. Check the InstanceState
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_instance_state``.
        port_name (str):
            Name of port user is interested in. It is
            optional. If it is set, only information about
            this ports will be returned. If it is not set,
            all the named ports will be returned. Always
            lists all instances.

            This field is a member of `oneof`_ ``_port_name``.
    """

    class InstanceState(proto.Enum):
        r"""Instances in which state should be returned. Valid options
        are: 'ALL', 'RUNNING'. By default, it lists all instances.

        Values:
            UNDEFINED_INSTANCE_STATE (0):
                A value indicating that the enum field is not
                set.
            ALL (64897):
                Matches any status of the instances, running,
                non-running and others.
            RUNNING (121282975):
                Instance is in RUNNING state if it is
                running.
        """
        UNDEFINED_INSTANCE_STATE = 0
        ALL = 64897
        RUNNING = 121282975

    instance_state: str = proto.Field(
        proto.STRING,
        number=92223591,
        optional=True,
    )
    port_name: str = proto.Field(
        proto.STRING,
        number=41534345,
        optional=True,
    )


class RegionInstanceGroupsSetNamedPortsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        fingerprint (str):
            The fingerprint of the named ports
            information for this instance group. Use this
            optional property to prevent conflicts when
            multiple users change the named ports settings
            concurrently. Obtain the fingerprint with the
            instanceGroups.get method. Then, include the
            fingerprint in your request to ensure that you
            do not overwrite changes that were applied from
            another concurrent request.

            This field is a member of `oneof`_ ``_fingerprint``.
        named_ports (MutableSequence[google.cloud.compute_v1.types.NamedPort]):
            The list of named ports to set for this
            instance group.
    """

    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    named_ports: MutableSequence["NamedPort"] = proto.RepeatedField(
        proto.MESSAGE,
        number=427598732,
        message="NamedPort",
    )


class RegionList(proto.Message):
    r"""Contains a list of region resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Region]):
            A list of Region resources.
        kind (str):
            [Output Only] Type of resource. Always compute#regionList
            for lists of regions.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Region"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Region",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse(proto.Message):
    r"""

    Attributes:
        firewall_policys (MutableSequence[google.cloud.compute_v1.types.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponseEffectiveFirewallPolicy]):
            Effective firewalls from firewall policy.
        firewalls (MutableSequence[google.cloud.compute_v1.types.Firewall]):
            Effective firewalls on the network.
    """

    firewall_policys: MutableSequence[
        "RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponseEffectiveFirewallPolicy"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=410985794,
        message="RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponseEffectiveFirewallPolicy",
    )
    firewalls: MutableSequence["Firewall"] = proto.RepeatedField(
        proto.MESSAGE,
        number=272245619,
        message="Firewall",
    )


class RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponseEffectiveFirewallPolicy(
    proto.Message
):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        display_name (str):
            [Output Only] The display name of the firewall policy.

            This field is a member of `oneof`_ ``_display_name``.
        name (str):
            [Output Only] The name of the firewall policy.

            This field is a member of `oneof`_ ``_name``.
        rules (MutableSequence[google.cloud.compute_v1.types.FirewallPolicyRule]):
            The rules that apply to the network.
        type_ (str):
            [Output Only] The type of the firewall policy. Can be one of
            HIERARCHY, NETWORK, NETWORK_REGIONAL. Check the Type enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""[Output Only] The type of the firewall policy. Can be one of
        HIERARCHY, NETWORK, NETWORK_REGIONAL.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            HIERARCHY (69902869):
                No description available.
            NETWORK (413984270):
                No description available.
            NETWORK_REGIONAL (190804272):
                No description available.
            UNSPECIFIED (526786327):
                No description available.
        """
        UNDEFINED_TYPE = 0
        HIERARCHY = 69902869
        NETWORK = 413984270
        NETWORK_REGIONAL = 190804272
        UNSPECIFIED = 526786327

    display_name: str = proto.Field(
        proto.STRING,
        number=4473832,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    rules: MutableSequence["FirewallPolicyRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=108873975,
        message="FirewallPolicyRule",
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class RegionSetLabelsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        label_fingerprint (str):
            The fingerprint of the previous set of labels
            for this resource, used to detect conflicts. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update labels. You must always provide an
            up-to-date fingerprint hash in order to update
            or change labels. Make a get() request to the
            resource to get the latest fingerprint.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            The labels to set for this resource.
    """

    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )


class RegionSetPolicyRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bindings (MutableSequence[google.cloud.compute_v1.types.Binding]):
            Flatten Policy to create a backwacd
            compatible wire-format. Deprecated. Use 'policy'
            to specify bindings.
        etag (str):
            Flatten Policy to create a backward
            compatible wire-format. Deprecated. Use 'policy'
            to specify the etag.

            This field is a member of `oneof`_ ``_etag``.
        policy (google.cloud.compute_v1.types.Policy):
            REQUIRED: The complete policy to be applied
            to the 'resource'. The size of the policy is
            limited to a few 10s of KB. An empty policy is
            in general a valid policy but certain services
            (like Projects) might reject them.

            This field is a member of `oneof`_ ``_policy``.
    """

    bindings: MutableSequence["Binding"] = proto.RepeatedField(
        proto.MESSAGE,
        number=403251854,
        message="Binding",
    )
    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    policy: "Policy" = proto.Field(
        proto.MESSAGE,
        number=91071794,
        optional=True,
        message="Policy",
    )


class RegionTargetHttpsProxiesSetSslCertificatesRequest(proto.Message):
    r"""

    Attributes:
        ssl_certificates (MutableSequence[str]):
            New set of SslCertificate resources to
            associate with this TargetHttpsProxy resource.
    """

    ssl_certificates: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=366006543,
    )


class RegionUrlMapsValidateRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        resource (google.cloud.compute_v1.types.UrlMap):
            Content of the UrlMap to be validated.

            This field is a member of `oneof`_ ``_resource``.
    """

    resource: "UrlMap" = proto.Field(
        proto.MESSAGE,
        number=195806222,
        optional=True,
        message="UrlMap",
    )


class RemoveAssociationFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.RemoveAssociation. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        name (str):
            Name for the attachment that will be removed.

            This field is a member of `oneof`_ ``_name``.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class RemoveAssociationNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    NetworkFirewallPolicies.RemoveAssociation. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        name (str):
            Name for the attachment that will be removed.

            This field is a member of `oneof`_ ``_name``.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class RemoveAssociationRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.RemoveAssociation. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        name (str):
            Name for the association that will be
            removed.

            This field is a member of `oneof`_ ``_name``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class RemoveHealthCheckTargetPoolRequest(proto.Message):
    r"""A request message for TargetPools.RemoveHealthCheck. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_pool (str):
            Name of the target pool to remove health
            checks from.
        target_pools_remove_health_check_request_resource (google.cloud.compute_v1.types.TargetPoolsRemoveHealthCheckRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_pool: str = proto.Field(
        proto.STRING,
        number=62796298,
    )
    target_pools_remove_health_check_request_resource: "TargetPoolsRemoveHealthCheckRequest" = proto.Field(
        proto.MESSAGE,
        number=304985011,
        message="TargetPoolsRemoveHealthCheckRequest",
    )


class RemoveInstanceTargetPoolRequest(proto.Message):
    r"""A request message for TargetPools.RemoveInstance. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_pool (str):
            Name of the TargetPool resource to remove
            instances from.
        target_pools_remove_instance_request_resource (google.cloud.compute_v1.types.TargetPoolsRemoveInstanceRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_pool: str = proto.Field(
        proto.STRING,
        number=62796298,
    )
    target_pools_remove_instance_request_resource: "TargetPoolsRemoveInstanceRequest" = proto.Field(
        proto.MESSAGE,
        number=29548547,
        message="TargetPoolsRemoveInstanceRequest",
    )


class RemoveInstancesInstanceGroupRequest(proto.Message):
    r"""A request message for InstanceGroups.RemoveInstances. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group (str):
            The name of the instance group where the
            specified instances will be removed.
        instance_groups_remove_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupsRemoveInstancesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the instance group
            is located.
    """

    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
    )
    instance_groups_remove_instances_request_resource: "InstanceGroupsRemoveInstancesRequest" = proto.Field(
        proto.MESSAGE,
        number=390981817,
        message="InstanceGroupsRemoveInstancesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class RemovePeeringNetworkRequest(proto.Message):
    r"""A request message for Networks.RemovePeering. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network (str):
            Name of the network resource to remove
            peering from.
        networks_remove_peering_request_resource (google.cloud.compute_v1.types.NetworksRemovePeeringRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    networks_remove_peering_request_resource: "NetworksRemovePeeringRequest" = (
        proto.Field(
            proto.MESSAGE,
            number=421162494,
            message="NetworksRemovePeeringRequest",
        )
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class RemoveResourcePoliciesDiskRequest(proto.Message):
    r"""A request message for Disks.RemoveResourcePolicies. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            The disk name for this request.
        disks_remove_resource_policies_request_resource (google.cloud.compute_v1.types.DisksRemoveResourcePoliciesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    disks_remove_resource_policies_request_resource: "DisksRemoveResourcePoliciesRequest" = proto.Field(
        proto.MESSAGE,
        number=436756718,
        message="DisksRemoveResourcePoliciesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class RemoveResourcePoliciesInstanceRequest(proto.Message):
    r"""A request message for Instances.RemoveResourcePolicies. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            The instance name for this request.
        instances_remove_resource_policies_request_resource (google.cloud.compute_v1.types.InstancesRemoveResourcePoliciesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instances_remove_resource_policies_request_resource: "InstancesRemoveResourcePoliciesRequest" = proto.Field(
        proto.MESSAGE,
        number=49229558,
        message="InstancesRemoveResourcePoliciesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class RemoveResourcePoliciesRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.RemoveResourcePolicies. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            The disk name for this request.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_disks_remove_resource_policies_request_resource (google.cloud.compute_v1.types.RegionDisksRemoveResourcePoliciesRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_disks_remove_resource_policies_request_resource: "RegionDisksRemoveResourcePoliciesRequest" = proto.Field(
        proto.MESSAGE,
        number=8741283,
        message="RegionDisksRemoveResourcePoliciesRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class RemoveRuleFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.RemoveRule. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        priority (int):
            The priority of the rule to remove from the
            firewall policy.

            This field is a member of `oneof`_ ``_priority``.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class RemoveRuleNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.RemoveRule. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        priority (int):
            The priority of the rule to remove from the
            firewall policy.

            This field is a member of `oneof`_ ``_priority``.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class RemoveRuleRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.RemoveRule. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall_policy (str):
            Name of the firewall policy to update.
        priority (int):
            The priority of the rule to remove from the
            firewall policy.

            This field is a member of `oneof`_ ``_priority``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall_policy: str = proto.Field(
        proto.STRING,
        number=498173265,
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class RemoveRuleSecurityPolicyRequest(proto.Message):
    r"""A request message for SecurityPolicies.RemoveRule. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        priority (int):
            The priority of the rule to remove from the
            security policy.

            This field is a member of `oneof`_ ``_priority``.
        project (str):
            Project ID for this request.
        security_policy (str):
            Name of the security policy to update.
    """

    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
    )


class RequestMirrorPolicy(proto.Message):
    r"""A policy that specifies how requests intended for the route's
    backends are shadowed to a separate mirrored backend service.
    The load balancer doesn't wait for responses from the shadow
    service. Before sending traffic to the shadow service, the host
    or authority header is suffixed with -shadow.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            The full or partial URL to the BackendService
            resource being mirrored to. The backend service
            configured for a mirroring policy must reference
            backends that are of the same type as the
            original backend service matched in the URL map.
            Serverless NEG backends are not currently
            supported as a mirrored backend service.

            This field is a member of `oneof`_ ``_backend_service``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
        optional=True,
    )


class Reservation(proto.Message):
    r"""Represents a reservation resource. A reservation ensures that
    capacity is held in a specific zone even if the reserved VMs are
    not running. For more information, read Reserving zonal
    resources.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        commitment (str):
            [Output Only] Full or partial URL to a parent commitment.
            This field displays for reservations that are tied to a
            commitment.

            This field is a member of `oneof`_ ``_commitment``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#reservations for reservations.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            The name of the resource, provided by the client when
            initially creating the resource. The resource name must be
            1-63 characters long, and comply with RFC1035. Specifically,
            the name must be 1-63 characters long and match the regular
            expression ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the
            first character must be a lowercase letter, and all
            following characters must be a dash, lowercase letter, or
            digit, except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        resource_policies (MutableMapping[str, str]):
            Resource policies to be added to this
            reservation. The key is defined by user, and the
            value is resource policy url. This is to define
            placement policy with reservation.
        resource_status (google.cloud.compute_v1.types.AllocationResourceStatus):
            [Output Only] Status information for Reservation resource.

            This field is a member of `oneof`_ ``_resource_status``.
        satisfies_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_satisfies_pzs``.
        self_link (str):
            [Output Only] Server-defined fully-qualified URL for this
            resource.

            This field is a member of `oneof`_ ``_self_link``.
        share_settings (google.cloud.compute_v1.types.ShareSettings):
            Specify share-settings to create a shared
            reservation. This property is optional. For more
            information about the syntax and options for
            this field and its subfields, see the guide for
            creating a shared reservation.

            This field is a member of `oneof`_ ``_share_settings``.
        specific_reservation (google.cloud.compute_v1.types.AllocationSpecificSKUReservation):
            Reservation for instances with specific
            machine shapes.

            This field is a member of `oneof`_ ``_specific_reservation``.
        specific_reservation_required (bool):
            Indicates whether the reservation can be
            consumed by VMs with affinity for "any"
            reservation. If the field is set, then only VMs
            that target the reservation by name can consume
            from this reservation.

            This field is a member of `oneof`_ ``_specific_reservation_required``.
        status (str):
            [Output Only] The status of the reservation. Check the
            Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        zone (str):
            Zone in which the reservation resides. A zone
            must be provided if the reservation is created
            within a commitment.

            This field is a member of `oneof`_ ``_zone``.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of the reservation.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            CREATING (455564985):
                Resources are being allocated for the
                reservation.
            DELETING (528602024):
                Reservation is currently being deleted.
            INVALID (530283991):
                No description available.
            READY (77848963):
                Reservation has allocated all its resources.
            UPDATING (494614342):
                Reservation is currently being resized.
        """
        UNDEFINED_STATUS = 0
        CREATING = 455564985
        DELETING = 528602024
        INVALID = 530283991
        READY = 77848963
        UPDATING = 494614342

    commitment: str = proto.Field(
        proto.STRING,
        number=482134805,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    resource_policies: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=22220385,
    )
    resource_status: "AllocationResourceStatus" = proto.Field(
        proto.MESSAGE,
        number=249429315,
        optional=True,
        message="AllocationResourceStatus",
    )
    satisfies_pzs: bool = proto.Field(
        proto.BOOL,
        number=480964267,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    share_settings: "ShareSettings" = proto.Field(
        proto.MESSAGE,
        number=266668163,
        optional=True,
        message="ShareSettings",
    )
    specific_reservation: "AllocationSpecificSKUReservation" = proto.Field(
        proto.MESSAGE,
        number=404901951,
        optional=True,
        message="AllocationSpecificSKUReservation",
    )
    specific_reservation_required: bool = proto.Field(
        proto.BOOL,
        number=226550687,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class ReservationAffinity(proto.Message):
    r"""Specifies the reservations that this instance can consume
    from.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        consume_reservation_type (str):
            Specifies the type of reservation from which this instance
            can consume resources: ANY_RESERVATION (default),
            SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming
            reserved instances for examples. Check the
            ConsumeReservationType enum for the list of possible values.

            This field is a member of `oneof`_ ``_consume_reservation_type``.
        key (str):
            Corresponds to the label key of a reservation resource. To
            target a SPECIFIC_RESERVATION by name, specify
            googleapis.com/reservation-name as the key and specify the
            name of your reservation as its value.

            This field is a member of `oneof`_ ``_key``.
        values (MutableSequence[str]):
            Corresponds to the label values of a
            reservation resource. This can be either a name
            to a reservation in the same project or
            "projects/different-project/reservations/some-reservation-name"
            to target a shared reservation in the same zone
            but in a different project.
    """

    class ConsumeReservationType(proto.Enum):
        r"""Specifies the type of reservation from which this instance can
        consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION,
        or NO_RESERVATION. See Consuming reserved instances for examples.

        Values:
            UNDEFINED_CONSUME_RESERVATION_TYPE (0):
                A value indicating that the enum field is not
                set.
            ANY_RESERVATION (200008121):
                Consume any allocation available.
            NO_RESERVATION (169322030):
                Do not consume from any allocated capacity.
            SPECIFIC_RESERVATION (229889055):
                Must consume from a specific reservation.
                Must specify key value fields for specifying the
                reservations.
            UNSPECIFIED (526786327):
                No description available.
        """
        UNDEFINED_CONSUME_RESERVATION_TYPE = 0
        ANY_RESERVATION = 200008121
        NO_RESERVATION = 169322030
        SPECIFIC_RESERVATION = 229889055
        UNSPECIFIED = 526786327

    consume_reservation_type: str = proto.Field(
        proto.STRING,
        number=300736944,
        optional=True,
    )
    key: str = proto.Field(
        proto.STRING,
        number=106079,
        optional=True,
    )
    values: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=249928994,
    )


class ReservationAggregatedList(proto.Message):
    r"""Contains a list of reservations.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.ReservationsScopedList]):
            A list of Allocation resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "ReservationsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="ReservationsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ReservationList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Reservation]):
            [Output Only] A list of Allocation resources.
        kind (str):
            [Output Only] Type of resource.Always
            compute#reservationsList for listsof reservations

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Reservation"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Reservation",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ReservationsResizeRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        specific_sku_count (int):
            Number of allocated resources can be resized
            with minimum = 1 and maximum = 1000.

            This field is a member of `oneof`_ ``_specific_sku_count``.
    """

    specific_sku_count: int = proto.Field(
        proto.INT64,
        number=13890720,
        optional=True,
    )


class ReservationsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        reservations (MutableSequence[google.cloud.compute_v1.types.Reservation]):
            A list of reservations contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of reservations when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    reservations: MutableSequence["Reservation"] = proto.RepeatedField(
        proto.MESSAGE,
        number=399717927,
        message="Reservation",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ResetInstanceRequest(proto.Message):
    r"""A request message for Instances.Reset. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ResizeDiskRequest(proto.Message):
    r"""A request message for Disks.Resize. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            The name of the persistent disk.
        disks_resize_request_resource (google.cloud.compute_v1.types.DisksResizeRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    disks_resize_request_resource: "DisksResizeRequest" = proto.Field(
        proto.MESSAGE,
        number=78307616,
        message="DisksResizeRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ResizeInstanceGroupManagerRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.Resize. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        size (int):
            The number of running instances that the
            managed instance group should maintain at any
            given time. The group automatically adds or
            removes instances to maintain the number of
            instances specified by this parameter.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    size: int = proto.Field(
        proto.INT32,
        number=3530753,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ResizeRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.Resize. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            Name of the regional persistent disk.
        project (str):
            The project ID for this request.
        region (str):
            Name of the region for this request.
        region_disks_resize_request_resource (google.cloud.compute_v1.types.RegionDisksResizeRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_disks_resize_request_resource: "RegionDisksResizeRequest" = proto.Field(
        proto.MESSAGE,
        number=446633237,
        message="RegionDisksResizeRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class ResizeRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for RegionInstanceGroupManagers.Resize. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            Name of the managed instance group.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        size (int):
            Number of instances that should exist in this
            instance group manager.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    size: int = proto.Field(
        proto.INT32,
        number=3530753,
    )


class ResizeReservationRequest(proto.Message):
    r"""A request message for Reservations.Resize. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        reservation (str):
            Name of the reservation to update.
        reservations_resize_request_resource (google.cloud.compute_v1.types.ReservationsResizeRequest):
            The body resource for this request
        zone (str):
            Name of the zone for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    reservation: str = proto.Field(
        proto.STRING,
        number=47530956,
    )
    reservations_resize_request_resource: "ReservationsResizeRequest" = proto.Field(
        proto.MESSAGE,
        number=389262801,
        message="ReservationsResizeRequest",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class ResourceCommitment(proto.Message):
    r"""Commitment for a particular resource (a Commitment is
    composed of one or more of these).


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        accelerator_type (str):
            Name of the accelerator type resource.
            Applicable only when the type is ACCELERATOR.

            This field is a member of `oneof`_ ``_accelerator_type``.
        amount (int):
            The amount of the resource purchased (in a
            type-dependent unit, such as bytes). For vCPUs,
            this can just be an integer. For memory, this
            must be provided in MB. Memory must be a
            multiple of 256 MB, with up to 6.5GB of memory
            per every vCPU.

            This field is a member of `oneof`_ ``_amount``.
        type_ (str):
            Type of resource for which this commitment applies. Possible
            values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR. Check
            the Type enum for the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""Type of resource for which this commitment applies. Possible values
        are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            ACCELERATOR (429815371):
                No description available.
            LOCAL_SSD (508934896):
                No description available.
            MEMORY (123056385):
                No description available.
            UNSPECIFIED (526786327):
                No description available.
            VCPU (2628978):
                No description available.
        """
        UNDEFINED_TYPE = 0
        ACCELERATOR = 429815371
        LOCAL_SSD = 508934896
        MEMORY = 123056385
        UNSPECIFIED = 526786327
        VCPU = 2628978

    accelerator_type: str = proto.Field(
        proto.STRING,
        number=138031246,
        optional=True,
    )
    amount: int = proto.Field(
        proto.INT64,
        number=196759640,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class ResourceGroupReference(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        group (str):
            A URI referencing one of the instance groups
            or network endpoint groups listed in the backend
            service.

            This field is a member of `oneof`_ ``_group``.
    """

    group: str = proto.Field(
        proto.STRING,
        number=98629247,
        optional=True,
    )


class ResourcePoliciesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        resource_policies (MutableSequence[google.cloud.compute_v1.types.ResourcePolicy]):
            A list of resourcePolicies contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of resourcePolicies when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    resource_policies: MutableSequence["ResourcePolicy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=22220385,
        message="ResourcePolicy",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ResourcePolicy(proto.Message):
    r"""Represents a Resource Policy resource. You can use resource
    policies to schedule actions for some Compute Engine resources.
    For example, you can use them to schedule persistent disk
    snapshots.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):

            This field is a member of `oneof`_ ``_description``.
        group_placement_policy (google.cloud.compute_v1.types.ResourcePolicyGroupPlacementPolicy):
            Resource policy for instances for placement
            configuration.

            This field is a member of `oneof`_ ``_group_placement_policy``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        instance_schedule_policy (google.cloud.compute_v1.types.ResourcePolicyInstanceSchedulePolicy):
            Resource policy for scheduling instance
            operations.

            This field is a member of `oneof`_ ``_instance_schedule_policy``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#resource_policies for resource policies.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            The name of the resource, provided by the client when
            initially creating the resource. The resource name must be
            1-63 characters long, and comply with RFC1035. Specifically,
            the name must be 1-63 characters long and match the regular
            expression ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the
            first character must be a lowercase letter, and all
            following characters must be a dash, lowercase letter, or
            digit, except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        region (str):

            This field is a member of `oneof`_ ``_region``.
        resource_status (google.cloud.compute_v1.types.ResourcePolicyResourceStatus):
            [Output Only] The system status of the resource policy.

            This field is a member of `oneof`_ ``_resource_status``.
        self_link (str):
            [Output Only] Server-defined fully-qualified URL for this
            resource.

            This field is a member of `oneof`_ ``_self_link``.
        snapshot_schedule_policy (google.cloud.compute_v1.types.ResourcePolicySnapshotSchedulePolicy):
            Resource policy for persistent disks for
            creating snapshots.

            This field is a member of `oneof`_ ``_snapshot_schedule_policy``.
        status (str):
            [Output Only] The status of resource policy creation. Check
            the Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of resource policy creation.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            CREATING (455564985):
                Resource policy is being created.
            DELETING (528602024):
                Resource policy is being deleted.
            EXPIRED (482489093):
                Resource policy is expired and will not run
                again.
            INVALID (530283991):
                No description available.
            READY (77848963):
                Resource policy is ready to be used.
        """
        UNDEFINED_STATUS = 0
        CREATING = 455564985
        DELETING = 528602024
        EXPIRED = 482489093
        INVALID = 530283991
        READY = 77848963

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    group_placement_policy: "ResourcePolicyGroupPlacementPolicy" = proto.Field(
        proto.MESSAGE,
        number=10931596,
        optional=True,
        message="ResourcePolicyGroupPlacementPolicy",
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    instance_schedule_policy: "ResourcePolicyInstanceSchedulePolicy" = proto.Field(
        proto.MESSAGE,
        number=344877104,
        optional=True,
        message="ResourcePolicyInstanceSchedulePolicy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    resource_status: "ResourcePolicyResourceStatus" = proto.Field(
        proto.MESSAGE,
        number=249429315,
        optional=True,
        message="ResourcePolicyResourceStatus",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    snapshot_schedule_policy: "ResourcePolicySnapshotSchedulePolicy" = proto.Field(
        proto.MESSAGE,
        number=218131295,
        optional=True,
        message="ResourcePolicySnapshotSchedulePolicy",
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )


class ResourcePolicyAggregatedList(proto.Message):
    r"""Contains a list of resourcePolicies.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        etag (str):

            This field is a member of `oneof`_ ``_etag``.
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.ResourcePoliciesScopedList]):
            A list of ResourcePolicy resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "ResourcePoliciesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="ResourcePoliciesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ResourcePolicyDailyCycle(proto.Message):
    r"""Time window specified for daily operations.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        days_in_cycle (int):
            Defines a schedule with units measured in
            days. The value determines how many days pass
            between the start of each cycle.

            This field is a member of `oneof`_ ``_days_in_cycle``.
        duration (str):
            [Output only] A predetermined duration for the window,
            automatically chosen to be the smallest possible in the
            given scenario.

            This field is a member of `oneof`_ ``_duration``.
        start_time (str):
            Start time of the window. This must be in UTC
            format that resolves to one of 00:00, 04:00,
            08:00, 12:00, 16:00, or 20:00. For example, both
            13:00-5 and 08:00 are valid.

            This field is a member of `oneof`_ ``_start_time``.
    """

    days_in_cycle: int = proto.Field(
        proto.INT32,
        number=369790004,
        optional=True,
    )
    duration: str = proto.Field(
        proto.STRING,
        number=155471252,
        optional=True,
    )
    start_time: str = proto.Field(
        proto.STRING,
        number=37467274,
        optional=True,
    )


class ResourcePolicyGroupPlacementPolicy(proto.Message):
    r"""A GroupPlacementPolicy specifies resource placement
    configuration. It specifies the failure bucket separation as
    well as network locality


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        availability_domain_count (int):
            The number of availability domains to spread
            instances across. If two instances are in
            different availability domain, they are not in
            the same low latency network.

            This field is a member of `oneof`_ ``_availability_domain_count``.
        collocation (str):
            Specifies network collocation
            Check the Collocation enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_collocation``.
        vm_count (int):
            Number of VMs in this placement group. Google
            does not recommend that you use this field
            unless you use a compact policy and you want
            your policy to work only if it contains this
            exact number of VMs.

            This field is a member of `oneof`_ ``_vm_count``.
    """

    class Collocation(proto.Enum):
        r"""Specifies network collocation

        Values:
            UNDEFINED_COLLOCATION (0):
                A value indicating that the enum field is not
                set.
            COLLOCATED (103257554):
                No description available.
            UNSPECIFIED_COLLOCATION (464308205):
                No description available.
        """
        UNDEFINED_COLLOCATION = 0
        COLLOCATED = 103257554
        UNSPECIFIED_COLLOCATION = 464308205

    availability_domain_count: int = proto.Field(
        proto.INT32,
        number=12453432,
        optional=True,
    )
    collocation: str = proto.Field(
        proto.STRING,
        number=511156533,
        optional=True,
    )
    vm_count: int = proto.Field(
        proto.INT32,
        number=261463431,
        optional=True,
    )


class ResourcePolicyHourlyCycle(proto.Message):
    r"""Time window specified for hourly operations.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        duration (str):
            [Output only] Duration of the time window, automatically
            chosen to be smallest possible in the given scenario.

            This field is a member of `oneof`_ ``_duration``.
        hours_in_cycle (int):
            Defines a schedule with units measured in
            hours. The value determines how many hours pass
            between the start of each cycle.

            This field is a member of `oneof`_ ``_hours_in_cycle``.
        start_time (str):
            Time within the window to start the operations. It must be
            in format "HH:MM", where HH : [00-23] and MM : [00-00] GMT.

            This field is a member of `oneof`_ ``_start_time``.
    """

    duration: str = proto.Field(
        proto.STRING,
        number=155471252,
        optional=True,
    )
    hours_in_cycle: int = proto.Field(
        proto.INT32,
        number=526763132,
        optional=True,
    )
    start_time: str = proto.Field(
        proto.STRING,
        number=37467274,
        optional=True,
    )


class ResourcePolicyInstanceSchedulePolicy(proto.Message):
    r"""An InstanceSchedulePolicy specifies when and how frequent
    certain operations are performed on the instance.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        expiration_time (str):
            The expiration time of the schedule. The
            timestamp is an RFC3339 string.

            This field is a member of `oneof`_ ``_expiration_time``.
        start_time (str):
            The start time of the schedule. The timestamp
            is an RFC3339 string.

            This field is a member of `oneof`_ ``_start_time``.
        time_zone (str):
            Specifies the time zone to be used in interpreting
            Schedule.schedule. The value of this field must be a time
            zone name from the tz database:
            https://wikipedia.org/wiki/Tz_database.

            This field is a member of `oneof`_ ``_time_zone``.
        vm_start_schedule (google.cloud.compute_v1.types.ResourcePolicyInstanceSchedulePolicySchedule):
            Specifies the schedule for starting
            instances.

            This field is a member of `oneof`_ ``_vm_start_schedule``.
        vm_stop_schedule (google.cloud.compute_v1.types.ResourcePolicyInstanceSchedulePolicySchedule):
            Specifies the schedule for stopping
            instances.

            This field is a member of `oneof`_ ``_vm_stop_schedule``.
    """

    expiration_time: str = proto.Field(
        proto.STRING,
        number=230299229,
        optional=True,
    )
    start_time: str = proto.Field(
        proto.STRING,
        number=37467274,
        optional=True,
    )
    time_zone: str = proto.Field(
        proto.STRING,
        number=36848094,
        optional=True,
    )
    vm_start_schedule: "ResourcePolicyInstanceSchedulePolicySchedule" = proto.Field(
        proto.MESSAGE,
        number=17762396,
        optional=True,
        message="ResourcePolicyInstanceSchedulePolicySchedule",
    )
    vm_stop_schedule: "ResourcePolicyInstanceSchedulePolicySchedule" = proto.Field(
        proto.MESSAGE,
        number=426242732,
        optional=True,
        message="ResourcePolicyInstanceSchedulePolicySchedule",
    )


class ResourcePolicyInstanceSchedulePolicySchedule(proto.Message):
    r"""Schedule for an instance operation.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        schedule (str):
            Specifies the frequency for the operation,
            using the unix-cron format.

            This field is a member of `oneof`_ ``_schedule``.
    """

    schedule: str = proto.Field(
        proto.STRING,
        number=375820951,
        optional=True,
    )


class ResourcePolicyList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        etag (str):

            This field is a member of `oneof`_ ``_etag``.
        id (str):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.ResourcePolicy]):
            [Output Only] A list of ResourcePolicy resources.
        kind (str):
            [Output Only] Type of resource.Always
            compute#resourcePoliciesList for listsof resourcePolicies

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["ResourcePolicy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="ResourcePolicy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ResourcePolicyResourceStatus(proto.Message):
    r"""Contains output only fields. Use this sub-message for all
    output fields set on ResourcePolicy. The internal structure of
    this "status" field should mimic the structure of ResourcePolicy
    proto specification.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_schedule_policy (google.cloud.compute_v1.types.ResourcePolicyResourceStatusInstanceSchedulePolicyStatus):
            [Output Only] Specifies a set of output values reffering to
            the instance_schedule_policy system status. This field
            should have the same name as corresponding policy field.

            This field is a member of `oneof`_ ``_instance_schedule_policy``.
    """

    instance_schedule_policy: "ResourcePolicyResourceStatusInstanceSchedulePolicyStatus" = proto.Field(
        proto.MESSAGE,
        number=344877104,
        optional=True,
        message="ResourcePolicyResourceStatusInstanceSchedulePolicyStatus",
    )


class ResourcePolicyResourceStatusInstanceSchedulePolicyStatus(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        last_run_start_time (str):
            [Output Only] The last time the schedule successfully ran.
            The timestamp is an RFC3339 string.

            This field is a member of `oneof`_ ``_last_run_start_time``.
        next_run_start_time (str):
            [Output Only] The next time the schedule is planned to run.
            The actual time might be slightly different. The timestamp
            is an RFC3339 string.

            This field is a member of `oneof`_ ``_next_run_start_time``.
    """

    last_run_start_time: str = proto.Field(
        proto.STRING,
        number=303069063,
        optional=True,
    )
    next_run_start_time: str = proto.Field(
        proto.STRING,
        number=318642570,
        optional=True,
    )


class ResourcePolicySnapshotSchedulePolicy(proto.Message):
    r"""A snapshot schedule policy specifies when and how frequently
    snapshots are to be created for the target disk. Also specifies
    how many and how long these scheduled snapshots should be
    retained.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        retention_policy (google.cloud.compute_v1.types.ResourcePolicySnapshotSchedulePolicyRetentionPolicy):
            Retention policy applied to snapshots created
            by this resource policy.

            This field is a member of `oneof`_ ``_retention_policy``.
        schedule (google.cloud.compute_v1.types.ResourcePolicySnapshotSchedulePolicySchedule):
            A Vm Maintenance Policy specifies what kind
            of infrastructure maintenance we are allowed to
            perform on this VM and when. Schedule that is
            applied to disks covered by this policy.

            This field is a member of `oneof`_ ``_schedule``.
        snapshot_properties (google.cloud.compute_v1.types.ResourcePolicySnapshotSchedulePolicySnapshotProperties):
            Properties with which snapshots are created
            such as labels, encryption keys.

            This field is a member of `oneof`_ ``_snapshot_properties``.
    """

    retention_policy: "ResourcePolicySnapshotSchedulePolicyRetentionPolicy" = (
        proto.Field(
            proto.MESSAGE,
            number=68625779,
            optional=True,
            message="ResourcePolicySnapshotSchedulePolicyRetentionPolicy",
        )
    )
    schedule: "ResourcePolicySnapshotSchedulePolicySchedule" = proto.Field(
        proto.MESSAGE,
        number=375820951,
        optional=True,
        message="ResourcePolicySnapshotSchedulePolicySchedule",
    )
    snapshot_properties: "ResourcePolicySnapshotSchedulePolicySnapshotProperties" = (
        proto.Field(
            proto.MESSAGE,
            number=185371278,
            optional=True,
            message="ResourcePolicySnapshotSchedulePolicySnapshotProperties",
        )
    )


class ResourcePolicySnapshotSchedulePolicyRetentionPolicy(proto.Message):
    r"""Policy for retention of scheduled snapshots.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        max_retention_days (int):
            Maximum age of the snapshot that is allowed
            to be kept.

            This field is a member of `oneof`_ ``_max_retention_days``.
        on_source_disk_delete (str):
            Specifies the behavior to apply to scheduled
            snapshots when the source disk is deleted. Check
            the OnSourceDiskDelete enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_on_source_disk_delete``.
    """

    class OnSourceDiskDelete(proto.Enum):
        r"""Specifies the behavior to apply to scheduled snapshots when
        the source disk is deleted.

        Values:
            UNDEFINED_ON_SOURCE_DISK_DELETE (0):
                A value indicating that the enum field is not
                set.
            APPLY_RETENTION_POLICY (535071332):
                No description available.
            KEEP_AUTO_SNAPSHOTS (258925689):
                No description available.
            UNSPECIFIED_ON_SOURCE_DISK_DELETE (239140769):
                No description available.
        """
        UNDEFINED_ON_SOURCE_DISK_DELETE = 0
        APPLY_RETENTION_POLICY = 535071332
        KEEP_AUTO_SNAPSHOTS = 258925689
        UNSPECIFIED_ON_SOURCE_DISK_DELETE = 239140769

    max_retention_days: int = proto.Field(
        proto.INT32,
        number=324296979,
        optional=True,
    )
    on_source_disk_delete: str = proto.Field(
        proto.STRING,
        number=321955529,
        optional=True,
    )


class ResourcePolicySnapshotSchedulePolicySchedule(proto.Message):
    r"""A schedule for disks where the schedueled operations are
    performed.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        daily_schedule (google.cloud.compute_v1.types.ResourcePolicyDailyCycle):

            This field is a member of `oneof`_ ``_daily_schedule``.
        hourly_schedule (google.cloud.compute_v1.types.ResourcePolicyHourlyCycle):

            This field is a member of `oneof`_ ``_hourly_schedule``.
        weekly_schedule (google.cloud.compute_v1.types.ResourcePolicyWeeklyCycle):

            This field is a member of `oneof`_ ``_weekly_schedule``.
    """

    daily_schedule: "ResourcePolicyDailyCycle" = proto.Field(
        proto.MESSAGE,
        number=86159869,
        optional=True,
        message="ResourcePolicyDailyCycle",
    )
    hourly_schedule: "ResourcePolicyHourlyCycle" = proto.Field(
        proto.MESSAGE,
        number=38328485,
        optional=True,
        message="ResourcePolicyHourlyCycle",
    )
    weekly_schedule: "ResourcePolicyWeeklyCycle" = proto.Field(
        proto.MESSAGE,
        number=359548053,
        optional=True,
        message="ResourcePolicyWeeklyCycle",
    )


class ResourcePolicySnapshotSchedulePolicySnapshotProperties(proto.Message):
    r"""Specified snapshot properties for scheduled snapshots created
    by this policy.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        chain_name (str):
            Chain name that the snapshot is created in.

            This field is a member of `oneof`_ ``_chain_name``.
        guest_flush (bool):
            Indication to perform a 'guest aware'
            snapshot.

            This field is a member of `oneof`_ ``_guest_flush``.
        labels (MutableMapping[str, str]):
            Labels to apply to scheduled snapshots. These
            can be later modified by the setLabels method.
            Label values may be empty.
        storage_locations (MutableSequence[str]):
            Cloud Storage bucket storage location of the
            auto snapshot (regional or multi-regional).
    """

    chain_name: str = proto.Field(
        proto.STRING,
        number=68644169,
        optional=True,
    )
    guest_flush: bool = proto.Field(
        proto.BOOL,
        number=385550813,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    storage_locations: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=328005274,
    )


class ResourcePolicyWeeklyCycle(proto.Message):
    r"""Time window specified for weekly operations.

    Attributes:
        day_of_weeks (MutableSequence[google.cloud.compute_v1.types.ResourcePolicyWeeklyCycleDayOfWeek]):
            Up to 7 intervals/windows, one for each day
            of the week.
    """

    day_of_weeks: MutableSequence[
        "ResourcePolicyWeeklyCycleDayOfWeek"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=257871834,
        message="ResourcePolicyWeeklyCycleDayOfWeek",
    )


class ResourcePolicyWeeklyCycleDayOfWeek(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        day (str):
            Defines a schedule that runs on specific days
            of the week. Specify one or more days. The
            following options are available: MONDAY,
            TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY,
            SUNDAY. Check the Day enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_day``.
        duration (str):
            [Output only] Duration of the time window, automatically
            chosen to be smallest possible in the given scenario.

            This field is a member of `oneof`_ ``_duration``.
        start_time (str):
            Time within the window to start the operations. It must be
            in format "HH:MM", where HH : [00-23] and MM : [00-00] GMT.

            This field is a member of `oneof`_ ``_start_time``.
    """

    class Day(proto.Enum):
        r"""Defines a schedule that runs on specific days of the week.
        Specify one or more days. The following options are available:
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY.

        Values:
            UNDEFINED_DAY (0):
                A value indicating that the enum field is not
                set.
            FRIDAY (471398751):
                No description available.
            INVALID (530283991):
                No description available.
            MONDAY (132310288):
                No description available.
            SATURDAY (279037881):
                No description available.
            SUNDAY (309626320):
                No description available.
            THURSDAY (207198682):
                No description available.
            TUESDAY (277509677):
                No description available.
            WEDNESDAY (422029110):
                No description available.
        """
        UNDEFINED_DAY = 0
        FRIDAY = 471398751
        INVALID = 530283991
        MONDAY = 132310288
        SATURDAY = 279037881
        SUNDAY = 309626320
        THURSDAY = 207198682
        TUESDAY = 277509677
        WEDNESDAY = 422029110

    day: str = proto.Field(
        proto.STRING,
        number=99228,
        optional=True,
    )
    duration: str = proto.Field(
        proto.STRING,
        number=155471252,
        optional=True,
    )
    start_time: str = proto.Field(
        proto.STRING,
        number=37467274,
        optional=True,
    )


class ResourceStatus(proto.Message):
    r"""Contains output only fields. Use this sub-message for actual
    values set on Instance attributes as compared to the value
    requested by the user (intent) in their instance CRUD calls.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        physical_host (str):
            [Output Only] An opaque ID of the host on which the VM is
            running.

            This field is a member of `oneof`_ ``_physical_host``.
    """

    physical_host: str = proto.Field(
        proto.STRING,
        number=464370704,
        optional=True,
    )


class ResumeInstanceRequest(proto.Message):
    r"""A request message for Instances.Resume. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance resource to resume.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class Route(proto.Message):
    r"""Represents a Route resource. A route defines a path from VM
    instances in the VPC network to a specific destination. This
    destination can be inside or outside the VPC network. For more
    information, read the Routes overview.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        as_paths (MutableSequence[google.cloud.compute_v1.types.RouteAsPath]):
            [Output Only] AS path.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this field when you create the resource.

            This field is a member of `oneof`_ ``_description``.
        dest_range (str):
            The destination range of outgoing packets
            that this route applies to. Both IPv4 and IPv6
            are supported.

            This field is a member of `oneof`_ ``_dest_range``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of this resource. Always compute#routes
            for Route resources.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?``. The first character must be
            a lowercase letter, and all following characters (except for
            the last character) must be a dash, lowercase letter, or
            digit. The last character must be a lowercase letter or
            digit.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            Fully-qualified URL of the network that this
            route applies to.

            This field is a member of `oneof`_ ``_network``.
        next_hop_gateway (str):
            The URL to a gateway that should handle
            matching packets. You can only specify the
            internet gateway using a full or partial valid
            URL: projects/
            project/global/gateways/default-internet-gateway

            This field is a member of `oneof`_ ``_next_hop_gateway``.
        next_hop_ilb (str):
            The URL to a forwarding rule of type
            loadBalancingScheme=INTERNAL that should handle
            matching packets or the IP address of the
            forwarding Rule. For example, the following are
            all valid URLs: - 10.128.0.56 -
            https://www.googleapis.com/compute/v1/projects/project/regions/region
            /forwardingRules/forwardingRule -
            regions/region/forwardingRules/forwardingRule

            This field is a member of `oneof`_ ``_next_hop_ilb``.
        next_hop_instance (str):
            The URL to an instance that should handle
            matching packets. You can specify this as a full
            or partial URL. For example:
            https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/

            This field is a member of `oneof`_ ``_next_hop_instance``.
        next_hop_ip (str):
            The network IP address of an instance that
            should handle matching packets. Only IPv4 is
            supported.

            This field is a member of `oneof`_ ``_next_hop_ip``.
        next_hop_network (str):
            The URL of the local network if it should
            handle matching packets.

            This field is a member of `oneof`_ ``_next_hop_network``.
        next_hop_peering (str):
            [Output Only] The network peering name that should handle
            matching packets, which should conform to RFC1035.

            This field is a member of `oneof`_ ``_next_hop_peering``.
        next_hop_vpn_tunnel (str):
            The URL to a VpnTunnel that should handle
            matching packets.

            This field is a member of `oneof`_ ``_next_hop_vpn_tunnel``.
        priority (int):
            The priority of this route. Priority is used to break ties
            in cases where there is more than one matching route of
            equal prefix length. In cases where multiple routes have
            equal prefix length, the one with the lowest-numbered
            priority value wins. The default value is ``1000``. The
            priority value must be from ``0`` to ``65535``, inclusive.

            This field is a member of `oneof`_ ``_priority``.
        route_status (str):
            [Output only] The status of the route. Check the RouteStatus
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_route_status``.
        route_type (str):
            [Output Only] The type of this route, which can be one of
            the following values: - 'TRANSIT' for a transit route that
            this router learned from another Cloud Router and will
            readvertise to one of its BGP peers - 'SUBNET' for a route
            from a subnet of the VPC - 'BGP' for a route learned from a
            BGP peer of this router - 'STATIC' for a static route Check
            the RouteType enum for the list of possible values.

            This field is a member of `oneof`_ ``_route_type``.
        self_link (str):
            [Output Only] Server-defined fully-qualified URL for this
            resource.

            This field is a member of `oneof`_ ``_self_link``.
        tags (MutableSequence[str]):
            A list of instance tags to which this route
            applies.
        warnings (MutableSequence[google.cloud.compute_v1.types.Warnings]):
            [Output Only] If potential misconfigurations are detected
            for this route, this field will be populated with warning
            messages.
    """

    class RouteStatus(proto.Enum):
        r"""[Output only] The status of the route.

        Values:
            UNDEFINED_ROUTE_STATUS (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                This route is processed and active.
            DROPPED (496235424):
                The route is dropped due to the VPC exceeding
                the dynamic route limit. For dynamic route
                limit, please refer to the Learned route example
            INACTIVE (270421099):
                This route is processed but inactive due to
                failure from the backend. The backend may have
                rejected the route
            PENDING (35394935):
                This route is being processed internally. The
                status will change once processed.
        """
        UNDEFINED_ROUTE_STATUS = 0
        ACTIVE = 314733318
        DROPPED = 496235424
        INACTIVE = 270421099
        PENDING = 35394935

    class RouteType(proto.Enum):
        r"""[Output Only] The type of this route, which can be one of the
        following values: - 'TRANSIT' for a transit route that this router
        learned from another Cloud Router and will readvertise to one of its
        BGP peers - 'SUBNET' for a route from a subnet of the VPC - 'BGP'
        for a route learned from a BGP peer of this router - 'STATIC' for a
        static route

        Values:
            UNDEFINED_ROUTE_TYPE (0):
                A value indicating that the enum field is not
                set.
            BGP (65707):
                No description available.
            STATIC (308331118):
                No description available.
            SUBNET (309278557):
                No description available.
            TRANSIT (187793843):
                No description available.
        """
        UNDEFINED_ROUTE_TYPE = 0
        BGP = 65707
        STATIC = 308331118
        SUBNET = 309278557
        TRANSIT = 187793843

    as_paths: MutableSequence["RouteAsPath"] = proto.RepeatedField(
        proto.MESSAGE,
        number=137568929,
        message="RouteAsPath",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    dest_range: str = proto.Field(
        proto.STRING,
        number=381327712,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    next_hop_gateway: str = proto.Field(
        proto.STRING,
        number=377175298,
        optional=True,
    )
    next_hop_ilb: str = proto.Field(
        proto.STRING,
        number=198679901,
        optional=True,
    )
    next_hop_instance: str = proto.Field(
        proto.STRING,
        number=393508247,
        optional=True,
    )
    next_hop_ip: str = proto.Field(
        proto.STRING,
        number=110319529,
        optional=True,
    )
    next_hop_network: str = proto.Field(
        proto.STRING,
        number=262295788,
        optional=True,
    )
    next_hop_peering: str = proto.Field(
        proto.STRING,
        number=412682750,
        optional=True,
    )
    next_hop_vpn_tunnel: str = proto.Field(
        proto.STRING,
        number=519844501,
        optional=True,
    )
    priority: int = proto.Field(
        proto.UINT32,
        number=445151652,
        optional=True,
    )
    route_status: str = proto.Field(
        proto.STRING,
        number=418162344,
        optional=True,
    )
    route_type: str = proto.Field(
        proto.STRING,
        number=375888752,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    tags: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=3552281,
    )
    warnings: MutableSequence["Warnings"] = proto.RepeatedField(
        proto.MESSAGE,
        number=498091095,
        message="Warnings",
    )


class RouteAsPath(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        as_lists (MutableSequence[int]):
            [Output Only] The AS numbers of the AS Path.
        path_segment_type (str):
            [Output Only] The type of the AS Path, which can be one of
            the following values: - 'AS_SET': unordered set of
            autonomous systems that the route in has traversed -
            'AS_SEQUENCE': ordered set of autonomous systems that the
            route has traversed - 'AS_CONFED_SEQUENCE': ordered set of
            Member Autonomous Systems in the local confederation that
            the route has traversed - 'AS_CONFED_SET': unordered set of
            Member Autonomous Systems in the local confederation that
            the route has traversed Check the PathSegmentType enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_path_segment_type``.
    """

    class PathSegmentType(proto.Enum):
        r"""[Output Only] The type of the AS Path, which can be one of the
        following values: - 'AS_SET': unordered set of autonomous systems
        that the route in has traversed - 'AS_SEQUENCE': ordered set of
        autonomous systems that the route has traversed -
        'AS_CONFED_SEQUENCE': ordered set of Member Autonomous Systems in
        the local confederation that the route has traversed -
        'AS_CONFED_SET': unordered set of Member Autonomous Systems in the
        local confederation that the route has traversed

        Values:
            UNDEFINED_PATH_SEGMENT_TYPE (0):
                A value indicating that the enum field is not
                set.
            AS_CONFED_SEQUENCE (222152624):
                No description available.
            AS_CONFED_SET (374040307):
                No description available.
            AS_SEQUENCE (106735918):
                No description available.
            AS_SET (329846453):
                No description available.
        """
        UNDEFINED_PATH_SEGMENT_TYPE = 0
        AS_CONFED_SEQUENCE = 222152624
        AS_CONFED_SET = 374040307
        AS_SEQUENCE = 106735918
        AS_SET = 329846453

    as_lists: MutableSequence[int] = proto.RepeatedField(
        proto.UINT32,
        number=134112584,
    )
    path_segment_type: str = proto.Field(
        proto.STRING,
        number=513464992,
        optional=True,
    )


class RouteList(proto.Message):
    r"""Contains a list of Route resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Route]):
            A list of Route resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Route"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Route",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class Router(proto.Message):
    r"""Represents a Cloud Router resource. For more information
    about Cloud Router, read the Cloud Router overview.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bgp (google.cloud.compute_v1.types.RouterBgp):
            BGP information specific to this router.

            This field is a member of `oneof`_ ``_bgp``.
        bgp_peers (MutableSequence[google.cloud.compute_v1.types.RouterBgpPeer]):
            BGP information that must be configured into
            the routing stack to establish BGP peering. This
            information must specify the peer ASN and either
            the interface name, IP address, or peer IP
            address. Please refer to RFC4273.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        encrypted_interconnect_router (bool):
            Indicates if a router is dedicated for use
            with encrypted VLAN attachments
            (interconnectAttachments).

            This field is a member of `oneof`_ ``_encrypted_interconnect_router``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        interfaces (MutableSequence[google.cloud.compute_v1.types.RouterInterface]):
            Router interfaces. Each interface requires
            either one linked resource, (for example,
            linkedVpnTunnel), or IP address and IP address
            range (for example, ipRange), or both.
        kind (str):
            [Output Only] Type of resource. Always compute#router for
            routers.

            This field is a member of `oneof`_ ``_kind``.
        md5_authentication_keys (MutableSequence[google.cloud.compute_v1.types.RouterMd5AuthenticationKey]):
            Keys used for MD5 authentication.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        nats (MutableSequence[google.cloud.compute_v1.types.RouterNat]):
            A list of NAT services created in this
            router.
        network (str):
            URI of the network to which this router
            belongs.

            This field is a member of `oneof`_ ``_network``.
        region (str):
            [Output Only] URI of the region where the router resides.
            You must specify this field as part of the HTTP request URL.
            It is not settable as a field in the request body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
    """

    bgp: "RouterBgp" = proto.Field(
        proto.MESSAGE,
        number=97483,
        optional=True,
        message="RouterBgp",
    )
    bgp_peers: MutableSequence["RouterBgpPeer"] = proto.RepeatedField(
        proto.MESSAGE,
        number=452695773,
        message="RouterBgpPeer",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    encrypted_interconnect_router: bool = proto.Field(
        proto.BOOL,
        number=297996575,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    interfaces: MutableSequence["RouterInterface"] = proto.RepeatedField(
        proto.MESSAGE,
        number=12073562,
        message="RouterInterface",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    md5_authentication_keys: MutableSequence[
        "RouterMd5AuthenticationKey"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=71063322,
        message="RouterMd5AuthenticationKey",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    nats: MutableSequence["RouterNat"] = proto.RepeatedField(
        proto.MESSAGE,
        number=3373938,
        message="RouterNat",
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )


class RouterAdvertisedIpRange(proto.Message):
    r"""Description-tagged IP ranges for the router to advertise.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        description (str):
            User-specified description for the IP range.

            This field is a member of `oneof`_ ``_description``.
        range_ (str):
            The IP range to advertise. The value must be
            a CIDR-formatted string.

            This field is a member of `oneof`_ ``_range``.
    """

    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    range_: str = proto.Field(
        proto.STRING,
        number=108280125,
        optional=True,
    )


class RouterAggregatedList(proto.Message):
    r"""Contains a list of routers.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.RoutersScopedList]):
            A list of Router resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "RoutersScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="RoutersScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class RouterBgp(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        advertise_mode (str):
            User-specified flag to indicate which mode to
            use for advertisement. The options are DEFAULT
            or CUSTOM. Check the AdvertiseMode enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_advertise_mode``.
        advertised_groups (MutableSequence[str]):
            User-specified list of prefix groups to advertise in custom
            mode. This field can only be populated if advertise_mode is
            CUSTOM and is advertised to all peers of the router. These
            groups will be advertised in addition to any specified
            prefixes. Leave this field blank to advertise no custom
            groups. Check the AdvertisedGroups enum for the list of
            possible values.
        advertised_ip_ranges (MutableSequence[google.cloud.compute_v1.types.RouterAdvertisedIpRange]):
            User-specified list of individual IP ranges to advertise in
            custom mode. This field can only be populated if
            advertise_mode is CUSTOM and is advertised to all peers of
            the router. These IP ranges will be advertised in addition
            to any specified groups. Leave this field blank to advertise
            no custom IP ranges.
        asn (int):
            Local BGP Autonomous System Number (ASN).
            Must be an RFC6996 private ASN, either 16-bit or
            32-bit. The value will be fixed for this router
            resource. All VPN tunnels that link to this
            router will have the same local ASN.

            This field is a member of `oneof`_ ``_asn``.
        keepalive_interval (int):
            The interval in seconds between BGP keepalive
            messages that are sent to the peer. Hold time is
            three times the interval at which keepalive
            messages are sent, and the hold time is the
            maximum number of seconds allowed to elapse
            between successive keepalive messages that BGP
            receives from a peer. BGP will use the smaller
            of either the local hold time value or the
            peer's hold time value as the hold time for the
            BGP connection between the two peers. If set,
            this value must be between 20 and 60. The
            default is 20.

            This field is a member of `oneof`_ ``_keepalive_interval``.
    """

    class AdvertiseMode(proto.Enum):
        r"""User-specified flag to indicate which mode to use for
        advertisement. The options are DEFAULT or CUSTOM.

        Values:
            UNDEFINED_ADVERTISE_MODE (0):
                A value indicating that the enum field is not
                set.
            CUSTOM (388595569):
                No description available.
            DEFAULT (115302945):
                No description available.
        """
        UNDEFINED_ADVERTISE_MODE = 0
        CUSTOM = 388595569
        DEFAULT = 115302945

    class AdvertisedGroups(proto.Enum):
        r"""

        Values:
            UNDEFINED_ADVERTISED_GROUPS (0):
                A value indicating that the enum field is not
                set.
            ALL_SUBNETS (3622872):
                Advertise all available subnets (including
                peer VPC subnets).
        """
        UNDEFINED_ADVERTISED_GROUPS = 0
        ALL_SUBNETS = 3622872

    advertise_mode: str = proto.Field(
        proto.STRING,
        number=312134331,
        optional=True,
    )
    advertised_groups: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=21065526,
    )
    advertised_ip_ranges: MutableSequence[
        "RouterAdvertisedIpRange"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=35449932,
        message="RouterAdvertisedIpRange",
    )
    asn: int = proto.Field(
        proto.UINT32,
        number=96892,
        optional=True,
    )
    keepalive_interval: int = proto.Field(
        proto.UINT32,
        number=276771516,
        optional=True,
    )


class RouterBgpPeer(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        advertise_mode (str):
            User-specified flag to indicate which mode to
            use for advertisement. Check the AdvertiseMode
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_advertise_mode``.
        advertised_groups (MutableSequence[str]):
            User-specified list of prefix groups to advertise in custom
            mode, which currently supports the following option: -
            ALL_SUBNETS: Advertises all of the router's own VPC subnets.
            This excludes any routes learned for subnets that use VPC
            Network Peering. Note that this field can only be populated
            if advertise_mode is CUSTOM and overrides the list defined
            for the router (in the "bgp" message). These groups are
            advertised in addition to any specified prefixes. Leave this
            field blank to advertise no custom groups. Check the
            AdvertisedGroups enum for the list of possible values.
        advertised_ip_ranges (MutableSequence[google.cloud.compute_v1.types.RouterAdvertisedIpRange]):
            User-specified list of individual IP ranges to advertise in
            custom mode. This field can only be populated if
            advertise_mode is CUSTOM and overrides the list defined for
            the router (in the "bgp" message). These IP ranges are
            advertised in addition to any specified groups. Leave this
            field blank to advertise no custom IP ranges.
        advertised_route_priority (int):
            The priority of routes advertised to this BGP
            peer. Where there is more than one matching
            route of maximum length, the routes with the
            lowest priority value win.

            This field is a member of `oneof`_ ``_advertised_route_priority``.
        bfd (google.cloud.compute_v1.types.RouterBgpPeerBfd):
            BFD configuration for the BGP peering.

            This field is a member of `oneof`_ ``_bfd``.
        enable (str):
            The status of the BGP peer connection. If set
            to FALSE, any active session with the peer is
            terminated and all associated routing
            information is removed. If set to TRUE, the peer
            connection can be established with routing
            information. The default is TRUE. Check the
            Enable enum for the list of possible values.

            This field is a member of `oneof`_ ``_enable``.
        enable_ipv6 (bool):
            Enable IPv6 traffic over BGP Peer. If not
            specified, it is disabled by default.

            This field is a member of `oneof`_ ``_enable_ipv6``.
        interface_name (str):
            Name of the interface the BGP peer is
            associated with.

            This field is a member of `oneof`_ ``_interface_name``.
        ip_address (str):
            IP address of the interface inside Google
            Cloud Platform. Only IPv4 is supported.

            This field is a member of `oneof`_ ``_ip_address``.
        ipv6_nexthop_address (str):
            IPv6 address of the interface inside Google
            Cloud Platform.

            This field is a member of `oneof`_ ``_ipv6_nexthop_address``.
        management_type (str):
            [Output Only] The resource that configures and manages this
            BGP peer. - MANAGED_BY_USER is the default value and can be
            managed by you or other users - MANAGED_BY_ATTACHMENT is a
            BGP peer that is configured and managed by Cloud
            Interconnect, specifically by an InterconnectAttachment of
            type PARTNER. Google automatically creates, updates, and
            deletes this type of BGP peer when the PARTNER
            InterconnectAttachment is created, updated, or deleted.
            Check the ManagementType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_management_type``.
        md5_authentication_key_name (str):
            Present if MD5 authentication is enabled for the peering.
            Must be the name of one of the entries in the
            Router.md5_authentication_keys. The field must comply with
            RFC1035.

            This field is a member of `oneof`_ ``_md5_authentication_key_name``.
        name (str):
            Name of this BGP peer. The name must be 1-63 characters
            long, and comply with RFC1035. Specifically, the name must
            be 1-63 characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        peer_asn (int):
            Peer BGP Autonomous System Number (ASN). Each
            BGP interface may use a different value.

            This field is a member of `oneof`_ ``_peer_asn``.
        peer_ip_address (str):
            IP address of the BGP interface outside
            Google Cloud Platform. Only IPv4 is supported.

            This field is a member of `oneof`_ ``_peer_ip_address``.
        peer_ipv6_nexthop_address (str):
            IPv6 address of the BGP interface outside
            Google Cloud Platform.

            This field is a member of `oneof`_ ``_peer_ipv6_nexthop_address``.
        router_appliance_instance (str):
            URI of the VM instance that is used as
            third-party router appliances such as Next Gen
            Firewalls, Virtual Routers, or Router
            Appliances. The VM instance must be located in
            zones contained in the same region as this Cloud
            Router. The VM instance is the peer side of the
            BGP session.

            This field is a member of `oneof`_ ``_router_appliance_instance``.
    """

    class AdvertiseMode(proto.Enum):
        r"""User-specified flag to indicate which mode to use for
        advertisement.

        Values:
            UNDEFINED_ADVERTISE_MODE (0):
                A value indicating that the enum field is not
                set.
            CUSTOM (388595569):
                No description available.
            DEFAULT (115302945):
                No description available.
        """
        UNDEFINED_ADVERTISE_MODE = 0
        CUSTOM = 388595569
        DEFAULT = 115302945

    class AdvertisedGroups(proto.Enum):
        r"""

        Values:
            UNDEFINED_ADVERTISED_GROUPS (0):
                A value indicating that the enum field is not
                set.
            ALL_SUBNETS (3622872):
                Advertise all available subnets (including
                peer VPC subnets).
        """
        UNDEFINED_ADVERTISED_GROUPS = 0
        ALL_SUBNETS = 3622872

    class Enable(proto.Enum):
        r"""The status of the BGP peer connection. If set to FALSE, any
        active session with the peer is terminated and all associated
        routing information is removed. If set to TRUE, the peer
        connection can be established with routing information. The
        default is TRUE.

        Values:
            UNDEFINED_ENABLE (0):
                A value indicating that the enum field is not
                set.
            FALSE (66658563):
                No description available.
            TRUE (2583950):
                No description available.
        """
        UNDEFINED_ENABLE = 0
        FALSE = 66658563
        TRUE = 2583950

    class ManagementType(proto.Enum):
        r"""[Output Only] The resource that configures and manages this BGP
        peer. - MANAGED_BY_USER is the default value and can be managed by
        you or other users - MANAGED_BY_ATTACHMENT is a BGP peer that is
        configured and managed by Cloud Interconnect, specifically by an
        InterconnectAttachment of type PARTNER. Google automatically
        creates, updates, and deletes this type of BGP peer when the PARTNER
        InterconnectAttachment is created, updated, or deleted.

        Values:
            UNDEFINED_MANAGEMENT_TYPE (0):
                A value indicating that the enum field is not
                set.
            MANAGED_BY_ATTACHMENT (458926411):
                The BGP peer is automatically created for
                PARTNER type InterconnectAttachment; Google will
                automatically create/delete this BGP peer when
                the PARTNER InterconnectAttachment is
                created/deleted, and Google will update the
                ipAddress and peerIpAddress when the PARTNER
                InterconnectAttachment is provisioned. This type
                of BGP peer cannot be created or deleted, but
                can be modified for all fields except for name,
                ipAddress and peerIpAddress.
            MANAGED_BY_USER (317294067):
                Default value, the BGP peer is manually
                created and managed by user.
        """
        UNDEFINED_MANAGEMENT_TYPE = 0
        MANAGED_BY_ATTACHMENT = 458926411
        MANAGED_BY_USER = 317294067

    advertise_mode: str = proto.Field(
        proto.STRING,
        number=312134331,
        optional=True,
    )
    advertised_groups: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=21065526,
    )
    advertised_ip_ranges: MutableSequence[
        "RouterAdvertisedIpRange"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=35449932,
        message="RouterAdvertisedIpRange",
    )
    advertised_route_priority: int = proto.Field(
        proto.UINT32,
        number=186486332,
        optional=True,
    )
    bfd: "RouterBgpPeerBfd" = proto.Field(
        proto.MESSAGE,
        number=97440,
        optional=True,
        message="RouterBgpPeerBfd",
    )
    enable: str = proto.Field(
        proto.STRING,
        number=311764355,
        optional=True,
    )
    enable_ipv6: bool = proto.Field(
        proto.BOOL,
        number=181467939,
        optional=True,
    )
    interface_name: str = proto.Field(
        proto.STRING,
        number=437854673,
        optional=True,
    )
    ip_address: str = proto.Field(
        proto.STRING,
        number=406272220,
        optional=True,
    )
    ipv6_nexthop_address: str = proto.Field(
        proto.STRING,
        number=27968211,
        optional=True,
    )
    management_type: str = proto.Field(
        proto.STRING,
        number=173703606,
        optional=True,
    )
    md5_authentication_key_name: str = proto.Field(
        proto.STRING,
        number=281075345,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    peer_asn: int = proto.Field(
        proto.UINT32,
        number=69573151,
        optional=True,
    )
    peer_ip_address: str = proto.Field(
        proto.STRING,
        number=207735769,
        optional=True,
    )
    peer_ipv6_nexthop_address: str = proto.Field(
        proto.STRING,
        number=491486608,
        optional=True,
    )
    router_appliance_instance: str = proto.Field(
        proto.STRING,
        number=468312989,
        optional=True,
    )


class RouterBgpPeerBfd(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        min_receive_interval (int):
            The minimum interval, in milliseconds,
            between BFD control packets received from the
            peer router. The actual value is negotiated
            between the two routers and is equal to the
            greater of this value and the transmit interval
            of the other router. If set, this value must be
            between 1000 and 30000. The default is 1000.

            This field is a member of `oneof`_ ``_min_receive_interval``.
        min_transmit_interval (int):
            The minimum interval, in milliseconds,
            between BFD control packets transmitted to the
            peer router. The actual value is negotiated
            between the two routers and is equal to the
            greater of this value and the corresponding
            receive interval of the other router. If set,
            this value must be between 1000 and 30000. The
            default is 1000.

            This field is a member of `oneof`_ ``_min_transmit_interval``.
        multiplier (int):
            The number of consecutive BFD packets that
            must be missed before BFD declares that a peer
            is unavailable. If set, the value must be a
            value between 5 and 16. The default is 5.

            This field is a member of `oneof`_ ``_multiplier``.
        session_initialization_mode (str):
            The BFD session initialization mode for this
            BGP peer. If set to ACTIVE, the Cloud Router
            will initiate the BFD session for this BGP peer.
            If set to PASSIVE, the Cloud Router will wait
            for the peer router to initiate the BFD session
            for this BGP peer. If set to DISABLED, BFD is
            disabled for this BGP peer. The default is
            DISABLED. Check the SessionInitializationMode
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_session_initialization_mode``.
    """

    class SessionInitializationMode(proto.Enum):
        r"""The BFD session initialization mode for this BGP peer. If set
        to ACTIVE, the Cloud Router will initiate the BFD session for
        this BGP peer. If set to PASSIVE, the Cloud Router will wait for
        the peer router to initiate the BFD session for this BGP peer.
        If set to DISABLED, BFD is disabled for this BGP peer. The
        default is DISABLED.

        Values:
            UNDEFINED_SESSION_INITIALIZATION_MODE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                No description available.
            DISABLED (516696700):
                No description available.
            PASSIVE (462813959):
                No description available.
        """
        UNDEFINED_SESSION_INITIALIZATION_MODE = 0
        ACTIVE = 314733318
        DISABLED = 516696700
        PASSIVE = 462813959

    min_receive_interval: int = proto.Field(
        proto.UINT32,
        number=186981614,
        optional=True,
    )
    min_transmit_interval: int = proto.Field(
        proto.UINT32,
        number=523282631,
        optional=True,
    )
    multiplier: int = proto.Field(
        proto.UINT32,
        number=191331777,
        optional=True,
    )
    session_initialization_mode: str = proto.Field(
        proto.STRING,
        number=105957049,
        optional=True,
    )


class RouterInterface(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ip_range (str):
            IP address and range of the interface. The IP
            range must be in the RFC3927 link-local IP
            address space. The value must be a
            CIDR-formatted string, for example:
            169.254.0.1/30. NOTE: Do not truncate the
            address as it represents the IP address of the
            interface.

            This field is a member of `oneof`_ ``_ip_range``.
        linked_interconnect_attachment (str):
            URI of the linked Interconnect attachment. It
            must be in the same region as the router. Each
            interface can have one linked resource, which
            can be a VPN tunnel, an Interconnect attachment,
            or a virtual machine instance.

            This field is a member of `oneof`_ ``_linked_interconnect_attachment``.
        linked_vpn_tunnel (str):
            URI of the linked VPN tunnel, which must be
            in the same region as the router. Each interface
            can have one linked resource, which can be a VPN
            tunnel, an Interconnect attachment, or a virtual
            machine instance.

            This field is a member of `oneof`_ ``_linked_vpn_tunnel``.
        management_type (str):
            [Output Only] The resource that configures and manages this
            interface. - MANAGED_BY_USER is the default value and can be
            managed directly by users. - MANAGED_BY_ATTACHMENT is an
            interface that is configured and managed by Cloud
            Interconnect, specifically, by an InterconnectAttachment of
            type PARTNER. Google automatically creates, updates, and
            deletes this type of interface when the PARTNER
            InterconnectAttachment is created, updated, or deleted.
            Check the ManagementType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_management_type``.
        name (str):
            Name of this interface entry. The name must be 1-63
            characters long, and comply with RFC1035. Specifically, the
            name must be 1-63 characters long and match the regular
            expression ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the
            first character must be a lowercase letter, and all
            following characters must be a dash, lowercase letter, or
            digit, except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        private_ip_address (str):
            The regional private internal IP address that
            is used to establish BGP sessions to a VM
            instance acting as a third-party Router
            Appliance, such as a Next Gen Firewall, a
            Virtual Router, or an SD-WAN VM.

            This field is a member of `oneof`_ ``_private_ip_address``.
        redundant_interface (str):
            Name of the interface that will be redundant with the
            current interface you are creating. The redundantInterface
            must belong to the same Cloud Router as the interface here.
            To establish the BGP session to a Router Appliance VM, you
            must create two BGP peers. The two BGP peers must be
            attached to two separate interfaces that are redundant with
            each other. The redundant_interface must be 1-63 characters
            long, and comply with RFC1035. Specifically, the
            redundant_interface must be 1-63 characters long and match
            the regular expression ``[a-z]([-a-z0-9]*[a-z0-9])?`` which
            means the first character must be a lowercase letter, and
            all following characters must be a dash, lowercase letter,
            or digit, except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_redundant_interface``.
        subnetwork (str):
            The URI of the subnetwork resource that this
            interface belongs to, which must be in the same
            region as the Cloud Router. When you establish a
            BGP session to a VM instance using this
            interface, the VM instance must belong to the
            same subnetwork as the subnetwork specified
            here.

            This field is a member of `oneof`_ ``_subnetwork``.
    """

    class ManagementType(proto.Enum):
        r"""[Output Only] The resource that configures and manages this
        interface. - MANAGED_BY_USER is the default value and can be managed
        directly by users. - MANAGED_BY_ATTACHMENT is an interface that is
        configured and managed by Cloud Interconnect, specifically, by an
        InterconnectAttachment of type PARTNER. Google automatically
        creates, updates, and deletes this type of interface when the
        PARTNER InterconnectAttachment is created, updated, or deleted.

        Values:
            UNDEFINED_MANAGEMENT_TYPE (0):
                A value indicating that the enum field is not
                set.
            MANAGED_BY_ATTACHMENT (458926411):
                The interface is automatically created for
                PARTNER type InterconnectAttachment, Google will
                automatically create/update/delete this
                interface when the PARTNER
                InterconnectAttachment is
                created/provisioned/deleted. This type of
                interface cannot be manually managed by user.
            MANAGED_BY_USER (317294067):
                Default value, the interface is manually
                created and managed by user.
        """
        UNDEFINED_MANAGEMENT_TYPE = 0
        MANAGED_BY_ATTACHMENT = 458926411
        MANAGED_BY_USER = 317294067

    ip_range: str = proto.Field(
        proto.STRING,
        number=145092645,
        optional=True,
    )
    linked_interconnect_attachment: str = proto.Field(
        proto.STRING,
        number=501085518,
        optional=True,
    )
    linked_vpn_tunnel: str = proto.Field(
        proto.STRING,
        number=352296953,
        optional=True,
    )
    management_type: str = proto.Field(
        proto.STRING,
        number=173703606,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    private_ip_address: str = proto.Field(
        proto.STRING,
        number=100854040,
        optional=True,
    )
    redundant_interface: str = proto.Field(
        proto.STRING,
        number=523187303,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
        optional=True,
    )


class RouterList(proto.Message):
    r"""Contains a list of Router resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Router]):
            A list of Router resources.
        kind (str):
            [Output Only] Type of resource. Always compute#router for
            routers.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Router"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Router",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class RouterMd5AuthenticationKey(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        key (str):
            [Input only] Value of the key. For patch and update calls,
            it can be skipped to copy the value from the previous
            configuration. This is allowed if the key with the same name
            existed before the operation. Maximum length is 80
            characters. Can only contain printable ASCII characters.

            This field is a member of `oneof`_ ``_key``.
        name (str):
            Name used to identify the key. Must be unique
            within a router. Must be referenced by at least
            one bgpPeer. Must comply with RFC1035.

            This field is a member of `oneof`_ ``_name``.
    """

    key: str = proto.Field(
        proto.STRING,
        number=106079,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )


class RouterNat(proto.Message):
    r"""Represents a Nat resource. It enables the VMs within the
    specified subnetworks to access Internet without external IP
    addresses. It specifies a list of subnetworks (and the ranges
    within) that want to use NAT. Customers can also provide the
    external IPs that would be used for NAT. GCP would auto-allocate
    ephemeral IPs if no external IPs are provided.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        drain_nat_ips (MutableSequence[str]):
            A list of URLs of the IP resources to be
            drained. These IPs must be valid static external
            IPs that have been assigned to the NAT. These
            IPs should be used for updating/patching a NAT
            only.
        enable_dynamic_port_allocation (bool):
            Enable Dynamic Port Allocation. If not
            specified, it is disabled by default. If set to
            true, - Dynamic Port Allocation will be enabled
            on this NAT config. -
            enableEndpointIndependentMapping cannot be set
            to true. - If minPorts is set, minPortsPerVm
            must be set to a power of two greater than or
            equal to 32. If minPortsPerVm is not set, a
            minimum of 32 ports will be allocated to a VM
            from this NAT config.

            This field is a member of `oneof`_ ``_enable_dynamic_port_allocation``.
        enable_endpoint_independent_mapping (bool):

            This field is a member of `oneof`_ ``_enable_endpoint_independent_mapping``.
        endpoint_types (MutableSequence[str]):
            List of NAT-ted endpoint types supported by the Nat Gateway.
            If the list is empty, then it will be equivalent to include
            ENDPOINT_TYPE_VM Check the EndpointTypes enum for the list
            of possible values.
        icmp_idle_timeout_sec (int):
            Timeout (in seconds) for ICMP connections.
            Defaults to 30s if not set.

            This field is a member of `oneof`_ ``_icmp_idle_timeout_sec``.
        log_config (google.cloud.compute_v1.types.RouterNatLogConfig):
            Configure logging on this NAT.

            This field is a member of `oneof`_ ``_log_config``.
        max_ports_per_vm (int):
            Maximum number of ports allocated to a VM
            from this NAT config when Dynamic Port
            Allocation is enabled. If Dynamic Port
            Allocation is not enabled, this field has no
            effect. If Dynamic Port Allocation is enabled,
            and this field is set, it must be set to a power
            of two greater than minPortsPerVm, or 64 if
            minPortsPerVm is not set. If Dynamic Port
            Allocation is enabled and this field is not set,
            a maximum of 65536 ports will be allocated to a
            VM from this NAT config.

            This field is a member of `oneof`_ ``_max_ports_per_vm``.
        min_ports_per_vm (int):
            Minimum number of ports allocated to a VM
            from this NAT config. If not set, a default
            number of ports is allocated to a VM. This is
            rounded up to the nearest power of 2. For
            example, if the value of this field is 50, at
            least 64 ports are allocated to a VM.

            This field is a member of `oneof`_ ``_min_ports_per_vm``.
        name (str):
            Unique name of this Nat service. The name
            must be 1-63 characters long and comply with
            RFC1035.

            This field is a member of `oneof`_ ``_name``.
        nat_ip_allocate_option (str):
            Specify the NatIpAllocateOption, which can take one of the
            following values: - MANUAL_ONLY: Uses only Nat IP addresses
            provided by customers. When there are not enough specified
            Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat
            IPs are allocated by Google Cloud Platform; customers can't
            specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip
            should be empty. Check the NatIpAllocateOption enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_nat_ip_allocate_option``.
        nat_ips (MutableSequence[str]):
            A list of URLs of the IP resources used for
            this Nat service. These IP addresses must be
            valid static external IP addresses assigned to
            the project.
        rules (MutableSequence[google.cloud.compute_v1.types.RouterNatRule]):
            A list of rules associated with this NAT.
        source_subnetwork_ip_ranges_to_nat (str):
            Specify the Nat option, which can take one of the following
            values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP
            ranges in every Subnetwork are allowed to Nat. -
            ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP
            ranges in every Subnetwork are allowed to Nat. -
            LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to
            Nat (specified in the field subnetwork below) The default is
            SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if
            this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or
            ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not
            be any other Router.Nat section in any Router for this
            network in this region. Check the
            SourceSubnetworkIpRangesToNat enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_source_subnetwork_ip_ranges_to_nat``.
        subnetworks (MutableSequence[google.cloud.compute_v1.types.RouterNatSubnetworkToNat]):
            A list of Subnetwork resources whose traffic should be
            translated by NAT Gateway. It is used only when
            LIST_OF_SUBNETWORKS is selected for the
            SubnetworkIpRangeToNatOption above.
        tcp_established_idle_timeout_sec (int):
            Timeout (in seconds) for TCP established
            connections. Defaults to 1200s if not set.

            This field is a member of `oneof`_ ``_tcp_established_idle_timeout_sec``.
        tcp_time_wait_timeout_sec (int):
            Timeout (in seconds) for TCP connections that are in
            TIME_WAIT state. Defaults to 120s if not set.

            This field is a member of `oneof`_ ``_tcp_time_wait_timeout_sec``.
        tcp_transitory_idle_timeout_sec (int):
            Timeout (in seconds) for TCP transitory
            connections. Defaults to 30s if not set.

            This field is a member of `oneof`_ ``_tcp_transitory_idle_timeout_sec``.
        udp_idle_timeout_sec (int):
            Timeout (in seconds) for UDP connections.
            Defaults to 30s if not set.

            This field is a member of `oneof`_ ``_udp_idle_timeout_sec``.
    """

    class EndpointTypes(proto.Enum):
        r"""

        Values:
            UNDEFINED_ENDPOINT_TYPES (0):
                A value indicating that the enum field is not
                set.
            ENDPOINT_TYPE_SWG (159344456):
                This is used for Secure Web Gateway
                endpoints.
            ENDPOINT_TYPE_VM (57095474):
                This is the default.
        """
        UNDEFINED_ENDPOINT_TYPES = 0
        ENDPOINT_TYPE_SWG = 159344456
        ENDPOINT_TYPE_VM = 57095474

    class NatIpAllocateOption(proto.Enum):
        r"""Specify the NatIpAllocateOption, which can take one of the following
        values: - MANUAL_ONLY: Uses only Nat IP addresses provided by
        customers. When there are not enough specified Nat IPs, the Nat
        service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by
        Google Cloud Platform; customers can't specify any Nat IPs. When
        choosing AUTO_ONLY, then nat_ip should be empty.

        Values:
            UNDEFINED_NAT_IP_ALLOCATE_OPTION (0):
                A value indicating that the enum field is not
                set.
            AUTO_ONLY (182333500):
                Nat IPs are allocated by GCP; customers can
                not specify any Nat IPs.
            MANUAL_ONLY (261251205):
                Only use Nat IPs provided by customers. When
                specified Nat IPs are not enough then the Nat
                service fails for new VMs.
        """
        UNDEFINED_NAT_IP_ALLOCATE_OPTION = 0
        AUTO_ONLY = 182333500
        MANUAL_ONLY = 261251205

    class SourceSubnetworkIpRangesToNat(proto.Enum):
        r"""Specify the Nat option, which can take one of the following values:
        - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every
        Subnetwork are allowed to Nat. -
        ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges
        in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A
        list of Subnetworks are allowed to Nat (specified in the field
        subnetwork below) The default is
        SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this
        field contains ALL_SUBNETWORKS_ALL_IP_RANGES or
        ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any
        other Router.Nat section in any Router for this network in this
        region.

        Values:
            UNDEFINED_SOURCE_SUBNETWORK_IP_RANGES_TO_NAT (0):
                A value indicating that the enum field is not
                set.
            ALL_SUBNETWORKS_ALL_IP_RANGES (179964376):
                All the IP ranges in every Subnetwork are
                allowed to Nat.
            ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES (185573819):
                All the primary IP ranges in every Subnetwork
                are allowed to Nat.
            LIST_OF_SUBNETWORKS (517542270):
                A list of Subnetworks are allowed to Nat
                (specified in the field subnetwork below)
        """
        UNDEFINED_SOURCE_SUBNETWORK_IP_RANGES_TO_NAT = 0
        ALL_SUBNETWORKS_ALL_IP_RANGES = 179964376
        ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES = 185573819
        LIST_OF_SUBNETWORKS = 517542270

    drain_nat_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=504078535,
    )
    enable_dynamic_port_allocation: bool = proto.Field(
        proto.BOOL,
        number=532106402,
        optional=True,
    )
    enable_endpoint_independent_mapping: bool = proto.Field(
        proto.BOOL,
        number=259441819,
        optional=True,
    )
    endpoint_types: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=502633807,
    )
    icmp_idle_timeout_sec: int = proto.Field(
        proto.INT32,
        number=3647562,
        optional=True,
    )
    log_config: "RouterNatLogConfig" = proto.Field(
        proto.MESSAGE,
        number=351299741,
        optional=True,
        message="RouterNatLogConfig",
    )
    max_ports_per_vm: int = proto.Field(
        proto.INT32,
        number=250062049,
        optional=True,
    )
    min_ports_per_vm: int = proto.Field(
        proto.INT32,
        number=186193587,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    nat_ip_allocate_option: str = proto.Field(
        proto.STRING,
        number=429726845,
        optional=True,
    )
    nat_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=117635086,
    )
    rules: MutableSequence["RouterNatRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=108873975,
        message="RouterNatRule",
    )
    source_subnetwork_ip_ranges_to_nat: str = proto.Field(
        proto.STRING,
        number=252213211,
        optional=True,
    )
    subnetworks: MutableSequence["RouterNatSubnetworkToNat"] = proto.RepeatedField(
        proto.MESSAGE,
        number=415853125,
        message="RouterNatSubnetworkToNat",
    )
    tcp_established_idle_timeout_sec: int = proto.Field(
        proto.INT32,
        number=223098349,
        optional=True,
    )
    tcp_time_wait_timeout_sec: int = proto.Field(
        proto.INT32,
        number=513596925,
        optional=True,
    )
    tcp_transitory_idle_timeout_sec: int = proto.Field(
        proto.INT32,
        number=205028774,
        optional=True,
    )
    udp_idle_timeout_sec: int = proto.Field(
        proto.INT32,
        number=64919878,
        optional=True,
    )


class RouterNatLogConfig(proto.Message):
    r"""Configuration of logging on a NAT.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enable (bool):
            Indicates whether or not to export logs. This
            is false by default.

            This field is a member of `oneof`_ ``_enable``.
        filter (str):
            Specify the desired filtering of logs on this NAT. If
            unspecified, logs are exported for all connections handled
            by this NAT. This option can take one of the following
            values: - ERRORS_ONLY: Export logs only for connection
            failures. - TRANSLATIONS_ONLY: Export logs only for
            successful connections. - ALL: Export logs for all
            connections, successful and unsuccessful. Check the Filter
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_filter``.
    """

    class Filter(proto.Enum):
        r"""Specify the desired filtering of logs on this NAT. If unspecified,
        logs are exported for all connections handled by this NAT. This
        option can take one of the following values: - ERRORS_ONLY: Export
        logs only for connection failures. - TRANSLATIONS_ONLY: Export logs
        only for successful connections. - ALL: Export logs for all
        connections, successful and unsuccessful.

        Values:
            UNDEFINED_FILTER (0):
                A value indicating that the enum field is not
                set.
            ALL (64897):
                Export logs for all (successful and
                unsuccessful) connections.
            ERRORS_ONLY (307484672):
                Export logs for connection failures only.
            TRANSLATIONS_ONLY (357212649):
                Export logs for successful connections only.
        """
        UNDEFINED_FILTER = 0
        ALL = 64897
        ERRORS_ONLY = 307484672
        TRANSLATIONS_ONLY = 357212649

    enable: bool = proto.Field(
        proto.BOOL,
        number=311764355,
        optional=True,
    )
    filter: str = proto.Field(
        proto.STRING,
        number=336120696,
        optional=True,
    )


class RouterNatRule(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        action (google.cloud.compute_v1.types.RouterNatRuleAction):
            The action to be enforced for traffic that
            matches this rule.

            This field is a member of `oneof`_ ``_action``.
        description (str):
            An optional description of this rule.

            This field is a member of `oneof`_ ``_description``.
        match (str):
            CEL expression that specifies the match condition that
            egress traffic from a VM is evaluated against. If it
            evaluates to true, the corresponding ``action`` is enforced.
            The following examples are valid match expressions for
            public NAT: "inIpRange(destination.ip, '1.1.0.0/16') \|\|
            inIpRange(destination.ip, '2.2.0.0/16')" "destination.ip ==
            '1.1.0.1' \|\| destination.ip == '8.8.8.8'" The following
            example is a valid match expression for private NAT:
            "nexthop.hub ==
            'https://networkconnectivity.googleapis.com/v1alpha1/projects/my-project/global/hub/hub-1'".

            This field is a member of `oneof`_ ``_match``.
        rule_number (int):
            An integer uniquely identifying a rule in the
            list. The rule number must be a positive value
            between 0 and 65000, and must be unique among
            rules within a NAT.

            This field is a member of `oneof`_ ``_rule_number``.
    """

    action: "RouterNatRuleAction" = proto.Field(
        proto.MESSAGE,
        number=187661878,
        optional=True,
        message="RouterNatRuleAction",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    match: str = proto.Field(
        proto.STRING,
        number=103668165,
        optional=True,
    )
    rule_number: int = proto.Field(
        proto.UINT32,
        number=535211500,
        optional=True,
    )


class RouterNatRuleAction(proto.Message):
    r"""

    Attributes:
        source_nat_active_ips (MutableSequence[str]):
            A list of URLs of the IP resources used for
            this NAT rule. These IP addresses must be valid
            static external IP addresses assigned to the
            project. This field is used for public NAT.
        source_nat_drain_ips (MutableSequence[str]):
            A list of URLs of the IP resources to be
            drained. These IPs must be valid static external
            IPs that have been assigned to the NAT. These
            IPs should be used for updating/patching a NAT
            rule only. This field is used for public NAT.
    """

    source_nat_active_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=210378229,
    )
    source_nat_drain_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=340812451,
    )


class RouterNatSubnetworkToNat(proto.Message):
    r"""Defines the IP ranges that want to use NAT for a subnetwork.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            URL for the subnetwork resource that will use
            NAT.

            This field is a member of `oneof`_ ``_name``.
        secondary_ip_range_names (MutableSequence[str]):
            A list of the secondary ranges of the Subnetwork that are
            allowed to use NAT. This can be populated only if
            "LIST_OF_SECONDARY_IP_RANGES" is one of the values in
            source_ip_ranges_to_nat.
        source_ip_ranges_to_nat (MutableSequence[str]):
            Specify the options for NAT ranges in the Subnetwork. All
            options of a single value are valid except
            NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with
            multiple values is: ["PRIMARY_IP_RANGE",
            "LIST_OF_SECONDARY_IP_RANGES"] Default: [ALL_IP_RANGES]
            Check the SourceIpRangesToNat enum for the list of possible
            values.
    """

    class SourceIpRangesToNat(proto.Enum):
        r"""

        Values:
            UNDEFINED_SOURCE_IP_RANGES_TO_NAT (0):
                A value indicating that the enum field is not
                set.
            ALL_IP_RANGES (35608496):
                The primary and all the secondary ranges are
                allowed to Nat.
            LIST_OF_SECONDARY_IP_RANGES (192289308):
                A list of secondary ranges are allowed to
                Nat.
            PRIMARY_IP_RANGE (297109954):
                The primary range is allowed to Nat.
        """
        UNDEFINED_SOURCE_IP_RANGES_TO_NAT = 0
        ALL_IP_RANGES = 35608496
        LIST_OF_SECONDARY_IP_RANGES = 192289308
        PRIMARY_IP_RANGE = 297109954

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    secondary_ip_range_names: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=264315097,
    )
    source_ip_ranges_to_nat: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=388310386,
    )


class RouterStatus(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        best_routes (MutableSequence[google.cloud.compute_v1.types.Route]):
            Best routes for this router's network.
        best_routes_for_router (MutableSequence[google.cloud.compute_v1.types.Route]):
            Best routes learned by this router.
        bgp_peer_status (MutableSequence[google.cloud.compute_v1.types.RouterStatusBgpPeerStatus]):

        nat_status (MutableSequence[google.cloud.compute_v1.types.RouterStatusNatStatus]):

        network (str):
            URI of the network to which this router
            belongs.

            This field is a member of `oneof`_ ``_network``.
    """

    best_routes: MutableSequence["Route"] = proto.RepeatedField(
        proto.MESSAGE,
        number=395826693,
        message="Route",
    )
    best_routes_for_router: MutableSequence["Route"] = proto.RepeatedField(
        proto.MESSAGE,
        number=119389689,
        message="Route",
    )
    bgp_peer_status: MutableSequence["RouterStatusBgpPeerStatus"] = proto.RepeatedField(
        proto.MESSAGE,
        number=218459131,
        message="RouterStatusBgpPeerStatus",
    )
    nat_status: MutableSequence["RouterStatusNatStatus"] = proto.RepeatedField(
        proto.MESSAGE,
        number=63098064,
        message="RouterStatusNatStatus",
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )


class RouterStatusBgpPeerStatus(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        advertised_routes (MutableSequence[google.cloud.compute_v1.types.Route]):
            Routes that were advertised to the remote BGP
            peer
        bfd_status (google.cloud.compute_v1.types.BfdStatus):

            This field is a member of `oneof`_ ``_bfd_status``.
        enable_ipv6 (bool):
            Enable IPv6 traffic over BGP Peer. If not
            specified, it is disabled by default.

            This field is a member of `oneof`_ ``_enable_ipv6``.
        ip_address (str):
            IP address of the local BGP interface.

            This field is a member of `oneof`_ ``_ip_address``.
        ipv6_nexthop_address (str):
            IPv6 address of the local BGP interface.

            This field is a member of `oneof`_ ``_ipv6_nexthop_address``.
        linked_vpn_tunnel (str):
            URL of the VPN tunnel that this BGP peer
            controls.

            This field is a member of `oneof`_ ``_linked_vpn_tunnel``.
        md5_auth_enabled (bool):
            Informs whether MD5 authentication is enabled
            on this BGP peer.

            This field is a member of `oneof`_ ``_md5_auth_enabled``.
        name (str):
            Name of this BGP peer. Unique within the
            Routers resource.

            This field is a member of `oneof`_ ``_name``.
        num_learned_routes (int):
            Number of routes learned from the remote BGP
            Peer.

            This field is a member of `oneof`_ ``_num_learned_routes``.
        peer_ip_address (str):
            IP address of the remote BGP interface.

            This field is a member of `oneof`_ ``_peer_ip_address``.
        peer_ipv6_nexthop_address (str):
            IPv6 address of the remote BGP interface.

            This field is a member of `oneof`_ ``_peer_ipv6_nexthop_address``.
        router_appliance_instance (str):
            [Output only] URI of the VM instance that is used as
            third-party router appliances such as Next Gen Firewalls,
            Virtual Routers, or Router Appliances. The VM instance is
            the peer side of the BGP session.

            This field is a member of `oneof`_ ``_router_appliance_instance``.
        state (str):
            The state of the BGP session. For a list of
            possible values for this field, see BGP session
            states.

            This field is a member of `oneof`_ ``_state``.
        status (str):
            Status of the BGP peer: {UP, DOWN}
            Check the Status enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_status``.
        status_reason (str):
            Indicates why particular status was returned.
            Check the StatusReason enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_status_reason``.
        uptime (str):
            Time this session has been up. Format: 14
            years, 51 weeks, 6 days, 23 hours, 59 minutes,
            59 seconds

            This field is a member of `oneof`_ ``_uptime``.
        uptime_seconds (str):
            Time this session has been up, in seconds.
            Format: 145

            This field is a member of `oneof`_ ``_uptime_seconds``.
    """

    class Status(proto.Enum):
        r"""Status of the BGP peer: {UP, DOWN}

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            DOWN (2104482):
                No description available.
            UNKNOWN (433141802):
                No description available.
            UP (2715):
                No description available.
        """
        UNDEFINED_STATUS = 0
        DOWN = 2104482
        UNKNOWN = 433141802
        UP = 2715

    class StatusReason(proto.Enum):
        r"""Indicates why particular status was returned.

        Values:
            UNDEFINED_STATUS_REASON (0):
                A value indicating that the enum field is not
                set.
            MD5_AUTH_INTERNAL_PROBLEM (140462259):
                Indicates internal problems with
                configuration of MD5 authentication. This
                particular reason can only be returned when
                md5AuthEnabled is true and status is DOWN.
            STATUS_REASON_UNSPECIFIED (394331913):
                No description available.
        """
        UNDEFINED_STATUS_REASON = 0
        MD5_AUTH_INTERNAL_PROBLEM = 140462259
        STATUS_REASON_UNSPECIFIED = 394331913

    advertised_routes: MutableSequence["Route"] = proto.RepeatedField(
        proto.MESSAGE,
        number=333393068,
        message="Route",
    )
    bfd_status: "BfdStatus" = proto.Field(
        proto.MESSAGE,
        number=395631729,
        optional=True,
        message="BfdStatus",
    )
    enable_ipv6: bool = proto.Field(
        proto.BOOL,
        number=181467939,
        optional=True,
    )
    ip_address: str = proto.Field(
        proto.STRING,
        number=406272220,
        optional=True,
    )
    ipv6_nexthop_address: str = proto.Field(
        proto.STRING,
        number=27968211,
        optional=True,
    )
    linked_vpn_tunnel: str = proto.Field(
        proto.STRING,
        number=352296953,
        optional=True,
    )
    md5_auth_enabled: bool = proto.Field(
        proto.BOOL,
        number=451152075,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    num_learned_routes: int = proto.Field(
        proto.UINT32,
        number=135457535,
        optional=True,
    )
    peer_ip_address: str = proto.Field(
        proto.STRING,
        number=207735769,
        optional=True,
    )
    peer_ipv6_nexthop_address: str = proto.Field(
        proto.STRING,
        number=491486608,
        optional=True,
    )
    router_appliance_instance: str = proto.Field(
        proto.STRING,
        number=468312989,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    status_reason: str = proto.Field(
        proto.STRING,
        number=342706993,
        optional=True,
    )
    uptime: str = proto.Field(
        proto.STRING,
        number=235379688,
        optional=True,
    )
    uptime_seconds: str = proto.Field(
        proto.STRING,
        number=104736040,
        optional=True,
    )


class RouterStatusNatStatus(proto.Message):
    r"""Status of a NAT contained in this router.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_allocated_nat_ips (MutableSequence[str]):
            A list of IPs auto-allocated for NAT. Example: ["1.1.1.1",
            "129.2.16.89"]
        drain_auto_allocated_nat_ips (MutableSequence[str]):
            A list of IPs auto-allocated for NAT that are in drain mode.
            Example: ["1.1.1.1", "179.12.26.133"].
        drain_user_allocated_nat_ips (MutableSequence[str]):
            A list of IPs user-allocated for NAT that are in drain mode.
            Example: ["1.1.1.1", "179.12.26.133"].
        min_extra_nat_ips_needed (int):
            The number of extra IPs to allocate. This will be greater
            than 0 only if user-specified IPs are NOT enough to allow
            all configured VMs to use NAT. This value is meaningful only
            when auto-allocation of NAT IPs is *not* used.

            This field is a member of `oneof`_ ``_min_extra_nat_ips_needed``.
        name (str):
            Unique name of this NAT.

            This field is a member of `oneof`_ ``_name``.
        num_vm_endpoints_with_nat_mappings (int):
            Number of VM endpoints (i.e., Nics) that can
            use NAT.

            This field is a member of `oneof`_ ``_num_vm_endpoints_with_nat_mappings``.
        rule_status (MutableSequence[google.cloud.compute_v1.types.RouterStatusNatStatusNatRuleStatus]):
            Status of rules in this NAT.
        user_allocated_nat_ip_resources (MutableSequence[str]):
            A list of fully qualified URLs of reserved IP
            address resources.
        user_allocated_nat_ips (MutableSequence[str]):
            A list of IPs user-allocated for NAT. They
            will be raw IP strings like "179.12.26.133".
    """

    auto_allocated_nat_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=510794246,
    )
    drain_auto_allocated_nat_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=309184557,
    )
    drain_user_allocated_nat_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=305268553,
    )
    min_extra_nat_ips_needed: int = proto.Field(
        proto.INT32,
        number=365786338,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    num_vm_endpoints_with_nat_mappings: int = proto.Field(
        proto.INT32,
        number=512367468,
        optional=True,
    )
    rule_status: MutableSequence[
        "RouterStatusNatStatusNatRuleStatus"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=140223125,
        message="RouterStatusNatStatusNatRuleStatus",
    )
    user_allocated_nat_ip_resources: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=212776151,
    )
    user_allocated_nat_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=506878242,
    )


class RouterStatusNatStatusNatRuleStatus(proto.Message):
    r"""Status of a NAT Rule contained in this NAT.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        active_nat_ips (MutableSequence[str]):
            A list of active IPs for NAT. Example: ["1.1.1.1",
            "179.12.26.133"].
        drain_nat_ips (MutableSequence[str]):
            A list of IPs for NAT that are in drain mode. Example:
            ["1.1.1.1", "179.12.26.133"].
        min_extra_ips_needed (int):
            The number of extra IPs to allocate. This
            will be greater than 0 only if the existing IPs
            in this NAT Rule are NOT enough to allow all
            configured VMs to use NAT.

            This field is a member of `oneof`_ ``_min_extra_ips_needed``.
        num_vm_endpoints_with_nat_mappings (int):
            Number of VM endpoints (i.e., NICs) that have
            NAT Mappings from this NAT Rule.

            This field is a member of `oneof`_ ``_num_vm_endpoints_with_nat_mappings``.
        rule_number (int):
            Rule number of the rule.

            This field is a member of `oneof`_ ``_rule_number``.
    """

    active_nat_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=208517077,
    )
    drain_nat_ips: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=504078535,
    )
    min_extra_ips_needed: int = proto.Field(
        proto.INT32,
        number=353002756,
        optional=True,
    )
    num_vm_endpoints_with_nat_mappings: int = proto.Field(
        proto.INT32,
        number=512367468,
        optional=True,
    )
    rule_number: int = proto.Field(
        proto.INT32,
        number=535211500,
        optional=True,
    )


class RouterStatusResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        result (google.cloud.compute_v1.types.RouterStatus):

            This field is a member of `oneof`_ ``_result``.
    """

    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    result: "RouterStatus" = proto.Field(
        proto.MESSAGE,
        number=139315229,
        optional=True,
        message="RouterStatus",
    )


class RoutersPreviewResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        resource (google.cloud.compute_v1.types.Router):
            Preview of given router.

            This field is a member of `oneof`_ ``_resource``.
    """

    resource: "Router" = proto.Field(
        proto.MESSAGE,
        number=195806222,
        optional=True,
        message="Router",
    )


class RoutersScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        routers (MutableSequence[google.cloud.compute_v1.types.Router]):
            A list of routers contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of routers when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    routers: MutableSequence["Router"] = proto.RepeatedField(
        proto.MESSAGE,
        number=311906890,
        message="Router",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class Rule(proto.Message):
    r"""This is deprecated and has no effect. Do not use.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        action (str):
            This is deprecated and has no effect. Do not
            use. Check the Action enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_action``.
        conditions (MutableSequence[google.cloud.compute_v1.types.Condition]):
            This is deprecated and has no effect. Do not
            use.
        description (str):
            This is deprecated and has no effect. Do not
            use.

            This field is a member of `oneof`_ ``_description``.
        ins (MutableSequence[str]):
            This is deprecated and has no effect. Do not
            use.
        log_configs (MutableSequence[google.cloud.compute_v1.types.LogConfig]):
            This is deprecated and has no effect. Do not
            use.
        not_ins (MutableSequence[str]):
            This is deprecated and has no effect. Do not
            use.
        permissions (MutableSequence[str]):
            This is deprecated and has no effect. Do not
            use.
    """

    class Action(proto.Enum):
        r"""This is deprecated and has no effect. Do not use.

        Values:
            UNDEFINED_ACTION (0):
                A value indicating that the enum field is not
                set.
            ALLOW (62368553):
                This is deprecated and has no effect. Do not
                use.
            ALLOW_WITH_LOG (76034177):
                This is deprecated and has no effect. Do not
                use.
            DENY (2094604):
                This is deprecated and has no effect. Do not
                use.
            DENY_WITH_LOG (351433982):
                This is deprecated and has no effect. Do not
                use.
            LOG (75556):
                This is deprecated and has no effect. Do not
                use.
            NO_ACTION (260643444):
                This is deprecated and has no effect. Do not
                use.
        """
        UNDEFINED_ACTION = 0
        ALLOW = 62368553
        ALLOW_WITH_LOG = 76034177
        DENY = 2094604
        DENY_WITH_LOG = 351433982
        LOG = 75556
        NO_ACTION = 260643444

    action: str = proto.Field(
        proto.STRING,
        number=187661878,
        optional=True,
    )
    conditions: MutableSequence["Condition"] = proto.RepeatedField(
        proto.MESSAGE,
        number=142882488,
        message="Condition",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    ins: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=104430,
    )
    log_configs: MutableSequence["LogConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=152873846,
        message="LogConfig",
    )
    not_ins: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=518443138,
    )
    permissions: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=59962500,
    )


class SSLHealthCheck(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        port (int):
            The TCP port number to which the health check
            prober sends packets. The default value is 443.
            Valid values are 1 through 65535.

            This field is a member of `oneof`_ ``_port``.
        port_name (str):
            Not supported.

            This field is a member of `oneof`_ ``_port_name``.
        port_specification (str):
            Specifies how a port is selected for health checking. Can be
            one of the following values: USE_FIXED_PORT: Specifies a
            port number explicitly using the port field in the health
            check. Supported by backend services for pass-through load
            balancers and backend services for proxy load balancers. Not
            supported by target pools. The health check supports all
            backends supported by the backend service provided the
            backend can be health checked. For example, GCE_VM_IP
            network endpoint groups, GCE_VM_IP_PORT network endpoint
            groups, and instance group backends. USE_NAMED_PORT: Not
            supported. USE_SERVING_PORT: Provides an indirect method of
            specifying the health check port by referring to the backend
            service. Only supported by backend services for proxy load
            balancers. Not supported by target pools. Not supported by
            backend services for pass-through load balancers. Supports
            all backends that can be health checked; for example,
            GCE_VM_IP_PORT network endpoint groups and instance group
            backends. For GCE_VM_IP_PORT network endpoint group
            backends, the health check uses the port number specified
            for each endpoint in the network endpoint group. For
            instance group backends, the health check uses the port
            number determined by looking up the backend service's named
            port in the instance group's list of named ports. Check the
            PortSpecification enum for the list of possible values.

            This field is a member of `oneof`_ ``_port_specification``.
        proxy_header (str):
            Specifies the type of proxy header to append before sending
            data to the backend, either NONE or PROXY_V1. The default is
            NONE. Check the ProxyHeader enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_proxy_header``.
        request (str):
            Instructs the health check prober to send
            this exact ASCII string, up to 1024 bytes in
            length, after establishing the TCP connection
            and SSL handshake.

            This field is a member of `oneof`_ ``_request``.
        response (str):
            Creates a content-based SSL health check. In
            addition to establishing a TCP connection and
            the TLS handshake, you can configure the health
            check to pass only when the backend sends this
            exact response ASCII string, up to 1024 bytes in
            length. For details, see:
            https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp

            This field is a member of `oneof`_ ``_response``.
    """

    class PortSpecification(proto.Enum):
        r"""Specifies how a port is selected for health checking. Can be one of
        the following values: USE_FIXED_PORT: Specifies a port number
        explicitly using the port field in the health check. Supported by
        backend services for pass-through load balancers and backend
        services for proxy load balancers. Not supported by target pools.
        The health check supports all backends supported by the backend
        service provided the backend can be health checked. For example,
        GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint
        groups, and instance group backends. USE_NAMED_PORT: Not supported.
        USE_SERVING_PORT: Provides an indirect method of specifying the
        health check port by referring to the backend service. Only
        supported by backend services for proxy load balancers. Not
        supported by target pools. Not supported by backend services for
        pass-through load balancers. Supports all backends that can be
        health checked; for example, GCE_VM_IP_PORT network endpoint groups
        and instance group backends. For GCE_VM_IP_PORT network endpoint
        group backends, the health check uses the port number specified for
        each endpoint in the network endpoint group. For instance group
        backends, the health check uses the port number determined by
        looking up the backend service's named port in the instance group's
        list of named ports.

        Values:
            UNDEFINED_PORT_SPECIFICATION (0):
                A value indicating that the enum field is not
                set.
            USE_FIXED_PORT (190235748):
                The port number in the health check's port is
                used for health checking. Applies to network
                endpoint group and instance group backends.
            USE_NAMED_PORT (349300671):
                Not supported.
            USE_SERVING_PORT (362637516):
                For network endpoint group backends, the
                health check uses the port number specified on
                each endpoint in the network endpoint group. For
                instance group backends, the health check uses
                the port number specified for the backend
                service's named port defined in the instance
                group's named ports.
        """
        UNDEFINED_PORT_SPECIFICATION = 0
        USE_FIXED_PORT = 190235748
        USE_NAMED_PORT = 349300671
        USE_SERVING_PORT = 362637516

    class ProxyHeader(proto.Enum):
        r"""Specifies the type of proxy header to append before sending data to
        the backend, either NONE or PROXY_V1. The default is NONE.

        Values:
            UNDEFINED_PROXY_HEADER (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No description available.
            PROXY_V1 (334352940):
                No description available.
        """
        UNDEFINED_PROXY_HEADER = 0
        NONE = 2402104
        PROXY_V1 = 334352940

    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )
    port_name: str = proto.Field(
        proto.STRING,
        number=41534345,
        optional=True,
    )
    port_specification: str = proto.Field(
        proto.STRING,
        number=51590597,
        optional=True,
    )
    proxy_header: str = proto.Field(
        proto.STRING,
        number=160374142,
        optional=True,
    )
    request: str = proto.Field(
        proto.STRING,
        number=21951119,
        optional=True,
    )
    response: str = proto.Field(
        proto.STRING,
        number=196547649,
        optional=True,
    )


class SavedAttachedDisk(proto.Message):
    r"""DEPRECATED: Please use compute#savedDisk instead. An
    instance-attached disk resource.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_delete (bool):
            Specifies whether the disk will be
            auto-deleted when the instance is deleted (but
            not when the disk is detached from the
            instance).

            This field is a member of `oneof`_ ``_auto_delete``.
        boot (bool):
            Indicates that this is a boot disk. The
            virtual machine will use the first partition of
            the disk for its root filesystem.

            This field is a member of `oneof`_ ``_boot``.
        device_name (str):
            Specifies the name of the disk attached to
            the source instance.

            This field is a member of `oneof`_ ``_device_name``.
        disk_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The encryption key for the disk.

            This field is a member of `oneof`_ ``_disk_encryption_key``.
        disk_size_gb (int):
            The size of the disk in base-2 GB.

            This field is a member of `oneof`_ ``_disk_size_gb``.
        disk_type (str):
            [Output Only] URL of the disk type resource. For example:
            projects/project /zones/zone/diskTypes/pd-standard or pd-ssd

            This field is a member of `oneof`_ ``_disk_type``.
        guest_os_features (MutableSequence[google.cloud.compute_v1.types.GuestOsFeature]):
            A list of features to enable on the guest
            operating system. Applicable only for bootable
            images. Read Enabling guest operating system
            features to see a list of available options.
        index (int):
            Specifies zero-based index of the disk that
            is attached to the source instance.

            This field is a member of `oneof`_ ``_index``.
        interface (str):
            Specifies the disk interface to use for
            attaching this disk, which is either SCSI or
            NVME. Check the Interface enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_interface``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#attachedDisk for attached disks.

            This field is a member of `oneof`_ ``_kind``.
        licenses (MutableSequence[str]):
            [Output Only] Any valid publicly visible licenses.
        mode (str):
            The mode in which this disk is attached to the source
            instance, either READ_WRITE or READ_ONLY. Check the Mode
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_mode``.
        source (str):
            Specifies a URL of the disk attached to the
            source instance.

            This field is a member of `oneof`_ ``_source``.
        storage_bytes (int):
            [Output Only] A size of the storage used by the disk's
            snapshot by this machine image.

            This field is a member of `oneof`_ ``_storage_bytes``.
        storage_bytes_status (str):
            [Output Only] An indicator whether storageBytes is in a
            stable state or it is being adjusted as a result of shared
            storage reallocation. This status can either be UPDATING,
            meaning the size of the snapshot is being updated, or
            UP_TO_DATE, meaning the size of the snapshot is up-to-date.
            Check the StorageBytesStatus enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_storage_bytes_status``.
        type_ (str):
            Specifies the type of the attached disk,
            either SCRATCH or PERSISTENT. Check the Type
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Interface(proto.Enum):
        r"""Specifies the disk interface to use for attaching this disk,
        which is either SCSI or NVME.

        Values:
            UNDEFINED_INTERFACE (0):
                A value indicating that the enum field is not
                set.
            NVME (2408800):
                No description available.
            SCSI (2539686):
                No description available.
        """
        UNDEFINED_INTERFACE = 0
        NVME = 2408800
        SCSI = 2539686

    class Mode(proto.Enum):
        r"""The mode in which this disk is attached to the source instance,
        either READ_WRITE or READ_ONLY.

        Values:
            UNDEFINED_MODE (0):
                A value indicating that the enum field is not
                set.
            READ_ONLY (91950261):
                Attaches this disk in read-only mode.
                Multiple virtual machines can use a disk in
                read-only mode at a time.
            READ_WRITE (173607894):
                *[Default]* Attaches this disk in read-write mode. Only one
                virtual machine at a time can be attached to a disk in
                read-write mode.
        """
        UNDEFINED_MODE = 0
        READ_ONLY = 91950261
        READ_WRITE = 173607894

    class StorageBytesStatus(proto.Enum):
        r"""[Output Only] An indicator whether storageBytes is in a stable state
        or it is being adjusted as a result of shared storage reallocation.
        This status can either be UPDATING, meaning the size of the snapshot
        is being updated, or UP_TO_DATE, meaning the size of the snapshot is
        up-to-date.

        Values:
            UNDEFINED_STORAGE_BYTES_STATUS (0):
                A value indicating that the enum field is not
                set.
            UPDATING (494614342):
                No description available.
            UP_TO_DATE (101306702):
                No description available.
        """
        UNDEFINED_STORAGE_BYTES_STATUS = 0
        UPDATING = 494614342
        UP_TO_DATE = 101306702

    class Type(proto.Enum):
        r"""Specifies the type of the attached disk, either SCRATCH or
        PERSISTENT.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            PERSISTENT (460683927):
                No description available.
            SCRATCH (496778970):
                No description available.
        """
        UNDEFINED_TYPE = 0
        PERSISTENT = 460683927
        SCRATCH = 496778970

    auto_delete: bool = proto.Field(
        proto.BOOL,
        number=464761403,
        optional=True,
    )
    boot: bool = proto.Field(
        proto.BOOL,
        number=3029746,
        optional=True,
    )
    device_name: str = proto.Field(
        proto.STRING,
        number=67541716,
        optional=True,
    )
    disk_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=271660677,
        optional=True,
        message="CustomerEncryptionKey",
    )
    disk_size_gb: int = proto.Field(
        proto.INT64,
        number=316263735,
        optional=True,
    )
    disk_type: str = proto.Field(
        proto.STRING,
        number=93009052,
        optional=True,
    )
    guest_os_features: MutableSequence["GuestOsFeature"] = proto.RepeatedField(
        proto.MESSAGE,
        number=79294545,
        message="GuestOsFeature",
    )
    index: int = proto.Field(
        proto.INT32,
        number=100346066,
        optional=True,
    )
    interface: str = proto.Field(
        proto.STRING,
        number=502623545,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    licenses: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=337642578,
    )
    mode: str = proto.Field(
        proto.STRING,
        number=3357091,
        optional=True,
    )
    source: str = proto.Field(
        proto.STRING,
        number=177235995,
        optional=True,
    )
    storage_bytes: int = proto.Field(
        proto.INT64,
        number=424631719,
        optional=True,
    )
    storage_bytes_status: str = proto.Field(
        proto.STRING,
        number=490739082,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class SavedDisk(proto.Message):
    r"""An instance-attached disk resource.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        architecture (str):
            [Output Only] The architecture of the attached disk. Check
            the Architecture enum for the list of possible values.

            This field is a member of `oneof`_ ``_architecture``.
        kind (str):
            [Output Only] Type of the resource. Always compute#savedDisk
            for attached disks.

            This field is a member of `oneof`_ ``_kind``.
        source_disk (str):
            Specifies a URL of the disk attached to the
            source instance.

            This field is a member of `oneof`_ ``_source_disk``.
        storage_bytes (int):
            [Output Only] Size of the individual disk snapshot used by
            this machine image.

            This field is a member of `oneof`_ ``_storage_bytes``.
        storage_bytes_status (str):
            [Output Only] An indicator whether storageBytes is in a
            stable state or it is being adjusted as a result of shared
            storage reallocation. This status can either be UPDATING,
            meaning the size of the snapshot is being updated, or
            UP_TO_DATE, meaning the size of the snapshot is up-to-date.
            Check the StorageBytesStatus enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_storage_bytes_status``.
    """

    class Architecture(proto.Enum):
        r"""[Output Only] The architecture of the attached disk.

        Values:
            UNDEFINED_ARCHITECTURE (0):
                A value indicating that the enum field is not
                set.
            ARCHITECTURE_UNSPECIFIED (394750507):
                Default value indicating Architecture is not
                set.
            ARM64 (62547450):
                Machines with architecture ARM64
            X86_64 (425300551):
                Machines with architecture X86_64
        """
        UNDEFINED_ARCHITECTURE = 0
        ARCHITECTURE_UNSPECIFIED = 394750507
        ARM64 = 62547450
        X86_64 = 425300551

    class StorageBytesStatus(proto.Enum):
        r"""[Output Only] An indicator whether storageBytes is in a stable state
        or it is being adjusted as a result of shared storage reallocation.
        This status can either be UPDATING, meaning the size of the snapshot
        is being updated, or UP_TO_DATE, meaning the size of the snapshot is
        up-to-date.

        Values:
            UNDEFINED_STORAGE_BYTES_STATUS (0):
                A value indicating that the enum field is not
                set.
            UPDATING (494614342):
                No description available.
            UP_TO_DATE (101306702):
                No description available.
        """
        UNDEFINED_STORAGE_BYTES_STATUS = 0
        UPDATING = 494614342
        UP_TO_DATE = 101306702

    architecture: str = proto.Field(
        proto.STRING,
        number=302803283,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    source_disk: str = proto.Field(
        proto.STRING,
        number=451753793,
        optional=True,
    )
    storage_bytes: int = proto.Field(
        proto.INT64,
        number=424631719,
        optional=True,
    )
    storage_bytes_status: str = proto.Field(
        proto.STRING,
        number=490739082,
        optional=True,
    )


class ScalingScheduleStatus(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        last_start_time (str):
            [Output Only] The last time the scaling schedule became
            active. Note: this is a timestamp when a schedule actually
            became active, not when it was planned to do so. The
            timestamp is in RFC3339 text format.

            This field is a member of `oneof`_ ``_last_start_time``.
        next_start_time (str):
            [Output Only] The next time the scaling schedule is to
            become active. Note: this is a timestamp when a schedule is
            planned to run, but the actual time might be slightly
            different. The timestamp is in RFC3339 text format.

            This field is a member of `oneof`_ ``_next_start_time``.
        state (str):
            [Output Only] The current state of a scaling schedule. Check
            the State enum for the list of possible values.

            This field is a member of `oneof`_ ``_state``.
    """

    class State(proto.Enum):
        r"""[Output Only] The current state of a scaling schedule.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                The current autoscaling recommendation is
                influenced by this scaling schedule.
            DISABLED (516696700):
                This scaling schedule has been disabled by
                the user.
            OBSOLETE (66532761):
                This scaling schedule will never become
                active again.
            READY (77848963):
                The current autoscaling recommendation is not
                influenced by this scaling schedule.
        """
        UNDEFINED_STATE = 0
        ACTIVE = 314733318
        DISABLED = 516696700
        OBSOLETE = 66532761
        READY = 77848963

    last_start_time: str = proto.Field(
        proto.STRING,
        number=34545107,
        optional=True,
    )
    next_start_time: str = proto.Field(
        proto.STRING,
        number=97270102,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )


class Scheduling(proto.Message):
    r"""Sets the scheduling options for an Instance.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        automatic_restart (bool):
            Specifies whether the instance should be
            automatically restarted if it is terminated by
            Compute Engine (not terminated by a user). You
            can only set the automatic restart option for
            standard instances. Preemptible instances cannot
            be automatically restarted. By default, this is
            set to true so an instance is automatically
            restarted if it is terminated by Compute Engine.

            This field is a member of `oneof`_ ``_automatic_restart``.
        instance_termination_action (str):
            Specifies the termination action for the
            instance. Check the InstanceTerminationAction
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_instance_termination_action``.
        location_hint (str):
            An opaque location hint used to place the
            instance close to other resources. This field is
            for use by internal tools that use the public
            API.

            This field is a member of `oneof`_ ``_location_hint``.
        min_node_cpus (int):
            The minimum number of virtual CPUs this
            instance will consume when running on a
            sole-tenant node.

            This field is a member of `oneof`_ ``_min_node_cpus``.
        node_affinities (MutableSequence[google.cloud.compute_v1.types.SchedulingNodeAffinity]):
            A set of node affinity and anti-affinity
            configurations. Refer to Configuring node
            affinity for more information. Overrides
            reservationAffinity.
        on_host_maintenance (str):
            Defines the maintenance behavior for this
            instance. For standard instances, the default
            behavior is MIGRATE. For preemptible instances,
            the default and only possible behavior is
            TERMINATE. For more information, see Set VM host
            maintenance policy. Check the OnHostMaintenance
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_on_host_maintenance``.
        preemptible (bool):
            Defines whether the instance is preemptible. This can only
            be set during instance creation or while the instance is
            stopped and therefore, in a ``TERMINATED`` state. See
            Instance Life Cycle for more information on the possible
            instance states.

            This field is a member of `oneof`_ ``_preemptible``.
        provisioning_model (str):
            Specifies the provisioning model of the
            instance. Check the ProvisioningModel enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_provisioning_model``.
    """

    class InstanceTerminationAction(proto.Enum):
        r"""Specifies the termination action for the instance.

        Values:
            UNDEFINED_INSTANCE_TERMINATION_ACTION (0):
                A value indicating that the enum field is not
                set.
            DELETE (402225579):
                Delete the VM.
            INSTANCE_TERMINATION_ACTION_UNSPECIFIED (92954803):
                Default value. This value is unused.
            STOP (2555906):
                Stop the VM without storing in-memory
                content. default action.
        """
        UNDEFINED_INSTANCE_TERMINATION_ACTION = 0
        DELETE = 402225579
        INSTANCE_TERMINATION_ACTION_UNSPECIFIED = 92954803
        STOP = 2555906

    class OnHostMaintenance(proto.Enum):
        r"""Defines the maintenance behavior for this instance. For
        standard instances, the default behavior is MIGRATE. For
        preemptible instances, the default and only possible behavior is
        TERMINATE. For more information, see Set VM host maintenance
        policy.

        Values:
            UNDEFINED_ON_HOST_MAINTENANCE (0):
                A value indicating that the enum field is not
                set.
            MIGRATE (165699979):
                *[Default]* Allows Compute Engine to automatically migrate
                instances out of the way of maintenance events.
            TERMINATE (527617601):
                Tells Compute Engine to terminate and
                (optionally) restart the instance away from the
                maintenance activity. If you would like your
                instance to be restarted, set the
                automaticRestart flag to true. Your instance may
                be restarted more than once, and it may be
                restarted outside the window of maintenance
                events.
        """
        UNDEFINED_ON_HOST_MAINTENANCE = 0
        MIGRATE = 165699979
        TERMINATE = 527617601

    class ProvisioningModel(proto.Enum):
        r"""Specifies the provisioning model of the instance.

        Values:
            UNDEFINED_PROVISIONING_MODEL (0):
                A value indicating that the enum field is not
                set.
            SPOT (2552066):
                Heavily discounted, no guaranteed runtime.
            STANDARD (484642493):
                Standard provisioning with user controlled
                runtime, no discounts.
        """
        UNDEFINED_PROVISIONING_MODEL = 0
        SPOT = 2552066
        STANDARD = 484642493

    automatic_restart: bool = proto.Field(
        proto.BOOL,
        number=350821371,
        optional=True,
    )
    instance_termination_action: str = proto.Field(
        proto.STRING,
        number=107380667,
        optional=True,
    )
    location_hint: str = proto.Field(
        proto.STRING,
        number=350519505,
        optional=True,
    )
    min_node_cpus: int = proto.Field(
        proto.INT32,
        number=317231675,
        optional=True,
    )
    node_affinities: MutableSequence["SchedulingNodeAffinity"] = proto.RepeatedField(
        proto.MESSAGE,
        number=461799971,
        message="SchedulingNodeAffinity",
    )
    on_host_maintenance: str = proto.Field(
        proto.STRING,
        number=64616796,
        optional=True,
    )
    preemptible: bool = proto.Field(
        proto.BOOL,
        number=324203169,
        optional=True,
    )
    provisioning_model: str = proto.Field(
        proto.STRING,
        number=494423,
        optional=True,
    )


class SchedulingNodeAffinity(proto.Message):
    r"""Node Affinity: the configuration of desired nodes onto which
    this Instance could be scheduled.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        key (str):
            Corresponds to the label key of Node
            resource.

            This field is a member of `oneof`_ ``_key``.
        operator (str):
            Defines the operation of node selection. Valid operators are
            IN for affinity and NOT_IN for anti-affinity. Check the
            Operator enum for the list of possible values.

            This field is a member of `oneof`_ ``_operator``.
        values (MutableSequence[str]):
            Corresponds to the label values of Node
            resource.
    """

    class Operator(proto.Enum):
        r"""Defines the operation of node selection. Valid operators are IN for
        affinity and NOT_IN for anti-affinity.

        Values:
            UNDEFINED_OPERATOR (0):
                A value indicating that the enum field is not
                set.
            IN (2341):
                Requires Compute Engine to seek for matched
                nodes.
            NOT_IN (161144369):
                Requires Compute Engine to avoid certain
                nodes.
            OPERATOR_UNSPECIFIED (128892924):
                No description available.
        """
        UNDEFINED_OPERATOR = 0
        IN = 2341
        NOT_IN = 161144369
        OPERATOR_UNSPECIFIED = 128892924

    key: str = proto.Field(
        proto.STRING,
        number=106079,
        optional=True,
    )
    operator: str = proto.Field(
        proto.STRING,
        number=36317348,
        optional=True,
    )
    values: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=249928994,
    )


class ScratchDisks(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk_gb (int):
            Size of the scratch disk, defined in GB.

            This field is a member of `oneof`_ ``_disk_gb``.
    """

    disk_gb: int = proto.Field(
        proto.INT32,
        number=60990141,
        optional=True,
    )


class Screenshot(proto.Message):
    r"""An instance's screenshot.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        contents (str):
            [Output Only] The Base64-encoded screenshot data.

            This field is a member of `oneof`_ ``_contents``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#screenshot for the screenshots.

            This field is a member of `oneof`_ ``_kind``.
    """

    contents: str = proto.Field(
        proto.STRING,
        number=506419994,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )


class SecurityPoliciesAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        etag (str):

            This field is a member of `oneof`_ ``_etag``.
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.SecurityPoliciesScopedList]):
            A list of SecurityPoliciesScopedList
            resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#securityPolicyAggregatedList for lists of Security
            Policies.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "SecurityPoliciesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="SecurityPoliciesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SecurityPoliciesListPreconfiguredExpressionSetsResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        preconfigured_expression_sets (google.cloud.compute_v1.types.SecurityPoliciesWafConfig):

            This field is a member of `oneof`_ ``_preconfigured_expression_sets``.
    """

    preconfigured_expression_sets: "SecurityPoliciesWafConfig" = proto.Field(
        proto.MESSAGE,
        number=536200826,
        optional=True,
        message="SecurityPoliciesWafConfig",
    )


class SecurityPoliciesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        security_policies (MutableSequence[google.cloud.compute_v1.types.SecurityPolicy]):
            A list of SecurityPolicies contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of security policies when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    security_policies: MutableSequence["SecurityPolicy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=127783791,
        message="SecurityPolicy",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SecurityPoliciesWafConfig(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        waf_rules (google.cloud.compute_v1.types.PreconfiguredWafSet):

            This field is a member of `oneof`_ ``_waf_rules``.
    """

    waf_rules: "PreconfiguredWafSet" = proto.Field(
        proto.MESSAGE,
        number=74899924,
        optional=True,
        message="PreconfiguredWafSet",
    )


class SecurityPolicy(proto.Message):
    r"""Represents a Google Cloud Armor security policy resource.
    Only external backend services that use load balancers can
    reference a security policy. For more information, see Google
    Cloud Armor security policy overview.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        adaptive_protection_config (google.cloud.compute_v1.types.SecurityPolicyAdaptiveProtectionConfig):

            This field is a member of `oneof`_ ``_adaptive_protection_config``.
        advanced_options_config (google.cloud.compute_v1.types.SecurityPolicyAdvancedOptionsConfig):

            This field is a member of `oneof`_ ``_advanced_options_config``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        ddos_protection_config (google.cloud.compute_v1.types.SecurityPolicyDdosProtectionConfig):

            This field is a member of `oneof`_ ``_ddos_protection_config``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            Specifies a fingerprint for this resource,
            which is essentially a hash of the metadata's
            contents and used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update metadata. You must always provide an
            up-to-date fingerprint hash in order to update
            or change metadata, otherwise the request will
            fail with error 412 conditionNotMet. To see the
            latest fingerprint, make get() request to the
            security policy.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output only] Type of the resource. Always
            compute#securityPolicyfor security policies

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        recaptcha_options_config (google.cloud.compute_v1.types.SecurityPolicyRecaptchaOptionsConfig):

            This field is a member of `oneof`_ ``_recaptcha_options_config``.
        region (str):
            [Output Only] URL of the region where the regional security
            policy resides. This field is not applicable to global
            security policies.

            This field is a member of `oneof`_ ``_region``.
        rules (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRule]):
            A list of rules that belong to this policy. There must
            always be a default rule which is a rule with priority
            2147483647 and match all condition (for the match condition
            this means match "*" for srcIpRanges and for the
            networkMatch condition every field must be either match "*"
            or not set). If no rules are provided when creating a
            security policy, a default rule with action "allow" will be
            added.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        type_ (str):
            The type indicates the intended use of the security policy.
            - CLOUD_ARMOR: Cloud Armor backend security policies can be
            configured to filter incoming HTTP requests targeting
            backend services. They filter requests before they hit the
            origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge
            security policies can be configured to filter incoming HTTP
            requests targeting backend services (including Cloud
            CDN-enabled) as well as backend buckets (Cloud Storage).
            They filter requests before the request is served from
            Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor
            internal service policies can be configured to filter HTTP
            requests targeting services managed by Traffic Director in a
            service mesh. They filter requests before the request is
            served from the application. - CLOUD_ARMOR_NETWORK: Cloud
            Armor network policies can be configured to filter packets
            targeting network load balancing resources such as backend
            services, target pools, target instances, and instances with
            external IPs. They filter requests before the request is
            served from the application. This field can be set only at
            resource creation time. Check the Type enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""The type indicates the intended use of the security policy. -
        CLOUD_ARMOR: Cloud Armor backend security policies can be configured
        to filter incoming HTTP requests targeting backend services. They
        filter requests before they hit the origin servers. -
        CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be
        configured to filter incoming HTTP requests targeting backend
        services (including Cloud CDN-enabled) as well as backend buckets
        (Cloud Storage). They filter requests before the request is served
        from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor
        internal service policies can be configured to filter HTTP requests
        targeting services managed by Traffic Director in a service mesh.
        They filter requests before the request is served from the
        application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can
        be configured to filter packets targeting network load balancing
        resources such as backend services, target pools, target instances,
        and instances with external IPs. They filter requests before the
        request is served from the application. This field can be set only
        at resource creation time.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            CLOUD_ARMOR (260640373):
                No description available.
            CLOUD_ARMOR_EDGE (250728775):
                No description available.
            CLOUD_ARMOR_NETWORK (488527428):
                No description available.
        """
        UNDEFINED_TYPE = 0
        CLOUD_ARMOR = 260640373
        CLOUD_ARMOR_EDGE = 250728775
        CLOUD_ARMOR_NETWORK = 488527428

    adaptive_protection_config: "SecurityPolicyAdaptiveProtectionConfig" = proto.Field(
        proto.MESSAGE,
        number=150240735,
        optional=True,
        message="SecurityPolicyAdaptiveProtectionConfig",
    )
    advanced_options_config: "SecurityPolicyAdvancedOptionsConfig" = proto.Field(
        proto.MESSAGE,
        number=449276352,
        optional=True,
        message="SecurityPolicyAdvancedOptionsConfig",
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    ddos_protection_config: "SecurityPolicyDdosProtectionConfig" = proto.Field(
        proto.MESSAGE,
        number=50315853,
        optional=True,
        message="SecurityPolicyDdosProtectionConfig",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    recaptcha_options_config: "SecurityPolicyRecaptchaOptionsConfig" = proto.Field(
        proto.MESSAGE,
        number=519006811,
        optional=True,
        message="SecurityPolicyRecaptchaOptionsConfig",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    rules: MutableSequence["SecurityPolicyRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=108873975,
        message="SecurityPolicyRule",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class SecurityPolicyAdaptiveProtectionConfig(proto.Message):
    r"""Configuration options for Cloud Armor Adaptive Protection
    (CAAP).


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        layer7_ddos_defense_config (google.cloud.compute_v1.types.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig):
            If set to true, enables Cloud Armor Machine
            Learning.

            This field is a member of `oneof`_ ``_layer7_ddos_defense_config``.
    """

    layer7_ddos_defense_config: "SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig" = proto.Field(
        proto.MESSAGE,
        number=437316771,
        optional=True,
        message="SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig",
    )


class SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(proto.Message):
    r"""Configuration options for L7 DDoS detection.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enable (bool):
            If set to true, enables CAAP for L7 DDoS
            detection.

            This field is a member of `oneof`_ ``_enable``.
        rule_visibility (str):
            Rule visibility can be one of the following:
            STANDARD - opaque rules. (default) PREMIUM -
            transparent rules. Check the RuleVisibility enum
            for the list of possible values.

            This field is a member of `oneof`_ ``_rule_visibility``.
    """

    class RuleVisibility(proto.Enum):
        r"""Rule visibility can be one of the following: STANDARD -
        opaque rules. (default) PREMIUM - transparent rules.

        Values:
            UNDEFINED_RULE_VISIBILITY (0):
                A value indicating that the enum field is not
                set.
            PREMIUM (399530551):
                No description available.
            STANDARD (484642493):
                No description available.
        """
        UNDEFINED_RULE_VISIBILITY = 0
        PREMIUM = 399530551
        STANDARD = 484642493

    enable: bool = proto.Field(
        proto.BOOL,
        number=311764355,
        optional=True,
    )
    rule_visibility: str = proto.Field(
        proto.STRING,
        number=453258293,
        optional=True,
    )


class SecurityPolicyAdvancedOptionsConfig(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        json_custom_config (google.cloud.compute_v1.types.SecurityPolicyAdvancedOptionsConfigJsonCustomConfig):
            Custom configuration to apply the JSON parsing. Only
            applicable when json_parsing is set to STANDARD.

            This field is a member of `oneof`_ ``_json_custom_config``.
        json_parsing (str):
            Check the JsonParsing enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_json_parsing``.
        log_level (str):
            Check the LogLevel enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_log_level``.
    """

    class JsonParsing(proto.Enum):
        r"""

        Values:
            UNDEFINED_JSON_PARSING (0):
                A value indicating that the enum field is not
                set.
            DISABLED (516696700):
                No description available.
            STANDARD (484642493):
                No description available.
        """
        UNDEFINED_JSON_PARSING = 0
        DISABLED = 516696700
        STANDARD = 484642493

    class LogLevel(proto.Enum):
        r"""

        Values:
            UNDEFINED_LOG_LEVEL (0):
                A value indicating that the enum field is not
                set.
            NORMAL (161067239):
                No description available.
            VERBOSE (532219234):
                No description available.
        """
        UNDEFINED_LOG_LEVEL = 0
        NORMAL = 161067239
        VERBOSE = 532219234

    json_custom_config: "SecurityPolicyAdvancedOptionsConfigJsonCustomConfig" = (
        proto.Field(
            proto.MESSAGE,
            number=111570105,
            optional=True,
            message="SecurityPolicyAdvancedOptionsConfigJsonCustomConfig",
        )
    )
    json_parsing: str = proto.Field(
        proto.STRING,
        number=282493529,
        optional=True,
    )
    log_level: str = proto.Field(
        proto.STRING,
        number=140582601,
        optional=True,
    )


class SecurityPolicyAdvancedOptionsConfigJsonCustomConfig(proto.Message):
    r"""

    Attributes:
        content_types (MutableSequence[str]):
            A list of custom Content-Type header values to apply the
            JSON parsing. As per RFC 1341, a Content-Type header value
            has the following format: Content-Type := type "/" subtype
            \*[";" parameter] When configuring a custom Content-Type
            header value, only the type/subtype needs to be specified,
            and the parameters should be excluded.
    """

    content_types: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=17428787,
    )


class SecurityPolicyDdosProtectionConfig(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ddos_protection (str):
            Check the DdosProtection enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_ddos_protection``.
    """

    class DdosProtection(proto.Enum):
        r"""

        Values:
            UNDEFINED_DDOS_PROTECTION (0):
                A value indicating that the enum field is not
                set.
            ADVANCED (63789090):
                No description available.
            STANDARD (484642493):
                No description available.
        """
        UNDEFINED_DDOS_PROTECTION = 0
        ADVANCED = 63789090
        STANDARD = 484642493

    ddos_protection: str = proto.Field(
        proto.STRING,
        number=275173268,
        optional=True,
    )


class SecurityPolicyList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.SecurityPolicy]):
            A list of SecurityPolicy resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#securityPolicyList for listsof securityPolicies

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["SecurityPolicy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="SecurityPolicy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SecurityPolicyRecaptchaOptionsConfig(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        redirect_site_key (str):
            An optional field to supply a reCAPTCHA site key to be used
            for all the rules using the redirect action with the type of
            GOOGLE_RECAPTCHA under the security policy. The specified
            site key needs to be created from the reCAPTCHA API. The
            user is responsible for the validity of the specified site
            key. If not specified, a Google-managed site key is used.

            This field is a member of `oneof`_ ``_redirect_site_key``.
    """

    redirect_site_key: str = proto.Field(
        proto.STRING,
        number=447677034,
        optional=True,
    )


class SecurityPolicyReference(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        security_policy (str):

            This field is a member of `oneof`_ ``_security_policy``.
    """

    security_policy: str = proto.Field(
        proto.STRING,
        number=171082513,
        optional=True,
    )


class SecurityPolicyRule(proto.Message):
    r"""Represents a rule that describes one or more match conditions
    along with the action to be taken when traffic matches this
    condition (allow or deny).


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        action (str):
            The Action to perform when the rule is matched. The
            following are the valid actions: - allow: allow access to
            target. - deny(STATUS): deny access to target, returns the
            HTTP response code specified. Valid values for ``STATUS``
            are 403, 404, and 502. - rate_based_ban: limit client
            traffic to the configured threshold and ban the client if
            the traffic exceeds the threshold. Configure parameters for
            this action in RateLimitOptions. Requires rate_limit_options
            to be set. - redirect: redirect to a different target. This
            can either be an internal reCAPTCHA redirect, or an external
            URL-based redirect via a 302 response. Parameters for this
            action can be configured via redirectOptions. - throttle:
            limit client traffic to the configured threshold. Configure
            parameters for this action in rateLimitOptions. Requires
            rate_limit_options to be set for this.

            This field is a member of `oneof`_ ``_action``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        header_action (google.cloud.compute_v1.types.SecurityPolicyRuleHttpHeaderAction):
            Optional, additional actions that are
            performed on headers.

            This field is a member of `oneof`_ ``_header_action``.
        kind (str):
            [Output only] Type of the resource. Always
            compute#securityPolicyRule for security policy rules

            This field is a member of `oneof`_ ``_kind``.
        match (google.cloud.compute_v1.types.SecurityPolicyRuleMatcher):
            A match condition that incoming traffic is
            evaluated against. If it evaluates to true, the
            corresponding 'action' is enforced.

            This field is a member of `oneof`_ ``_match``.
        preconfigured_waf_config (google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfig):
            Preconfigured WAF configuration to be applied
            for the rule. If the rule does not evaluate
            preconfigured WAF rules, i.e., if
            evaluatePreconfiguredWaf() is not used, this
            field will have no effect.

            This field is a member of `oneof`_ ``_preconfigured_waf_config``.
        preview (bool):
            If set to true, the specified action is not
            enforced.

            This field is a member of `oneof`_ ``_preview``.
        priority (int):
            An integer indicating the priority of a rule
            in the list. The priority must be a positive
            value between 0 and 2147483647. Rules are
            evaluated from highest to lowest priority where
            0 is the highest priority and 2147483647 is the
            lowest priority.

            This field is a member of `oneof`_ ``_priority``.
        rate_limit_options (google.cloud.compute_v1.types.SecurityPolicyRuleRateLimitOptions):
            Must be specified if the action is "rate_based_ban" or
            "throttle". Cannot be specified for any other actions.

            This field is a member of `oneof`_ ``_rate_limit_options``.
        redirect_options (google.cloud.compute_v1.types.SecurityPolicyRuleRedirectOptions):
            Parameters defining the redirect action.
            Cannot be specified for any other actions.

            This field is a member of `oneof`_ ``_redirect_options``.
    """

    action: str = proto.Field(
        proto.STRING,
        number=187661878,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    header_action: "SecurityPolicyRuleHttpHeaderAction" = proto.Field(
        proto.MESSAGE,
        number=328077352,
        optional=True,
        message="SecurityPolicyRuleHttpHeaderAction",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    match: "SecurityPolicyRuleMatcher" = proto.Field(
        proto.MESSAGE,
        number=103668165,
        optional=True,
        message="SecurityPolicyRuleMatcher",
    )
    preconfigured_waf_config: "SecurityPolicyRulePreconfiguredWafConfig" = proto.Field(
        proto.MESSAGE,
        number=117805027,
        optional=True,
        message="SecurityPolicyRulePreconfiguredWafConfig",
    )
    preview: bool = proto.Field(
        proto.BOOL,
        number=218686408,
        optional=True,
    )
    priority: int = proto.Field(
        proto.INT32,
        number=445151652,
        optional=True,
    )
    rate_limit_options: "SecurityPolicyRuleRateLimitOptions" = proto.Field(
        proto.MESSAGE,
        number=67544315,
        optional=True,
        message="SecurityPolicyRuleRateLimitOptions",
    )
    redirect_options: "SecurityPolicyRuleRedirectOptions" = proto.Field(
        proto.MESSAGE,
        number=163285307,
        optional=True,
        message="SecurityPolicyRuleRedirectOptions",
    )


class SecurityPolicyRuleHttpHeaderAction(proto.Message):
    r"""

    Attributes:
        request_headers_to_adds (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRuleHttpHeaderActionHttpHeaderOption]):
            The list of request headers to add or
            overwrite if they're already present.
    """

    request_headers_to_adds: MutableSequence[
        "SecurityPolicyRuleHttpHeaderActionHttpHeaderOption"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=87987661,
        message="SecurityPolicyRuleHttpHeaderActionHttpHeaderOption",
    )


class SecurityPolicyRuleHttpHeaderActionHttpHeaderOption(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        header_name (str):
            The name of the header to set.

            This field is a member of `oneof`_ ``_header_name``.
        header_value (str):
            The value to set the named header to.

            This field is a member of `oneof`_ ``_header_value``.
    """

    header_name: str = proto.Field(
        proto.STRING,
        number=110223613,
        optional=True,
    )
    header_value: str = proto.Field(
        proto.STRING,
        number=203094335,
        optional=True,
    )


class SecurityPolicyRuleMatcher(proto.Message):
    r"""Represents a match condition that incoming traffic is
    evaluated against. Exactly one field must be specified.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        config (google.cloud.compute_v1.types.SecurityPolicyRuleMatcherConfig):
            The configuration options available when specifying
            versioned_expr. This field must be specified if
            versioned_expr is specified and cannot be specified if
            versioned_expr is not specified.

            This field is a member of `oneof`_ ``_config``.
        expr (google.cloud.compute_v1.types.Expr):
            User defined CEVAL expression. A CEVAL expression is used to
            specify match criteria such as origin.ip, source.region_code
            and contents in the request header.

            This field is a member of `oneof`_ ``_expr``.
        versioned_expr (str):
            Preconfigured versioned expression. If this field is
            specified, config must also be specified. Available
            preconfigured expressions along with their requirements are:
            SRC_IPS_V1 - must specify the corresponding src_ip_range
            field in config. Check the VersionedExpr enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_versioned_expr``.
    """

    class VersionedExpr(proto.Enum):
        r"""Preconfigured versioned expression. If this field is specified,
        config must also be specified. Available preconfigured expressions
        along with their requirements are: SRC_IPS_V1 - must specify the
        corresponding src_ip_range field in config.

        Values:
            UNDEFINED_VERSIONED_EXPR (0):
                A value indicating that the enum field is not
                set.
            SRC_IPS_V1 (70925961):
                Matches the source IP address of a request to
                the IP ranges supplied in config.
        """
        UNDEFINED_VERSIONED_EXPR = 0
        SRC_IPS_V1 = 70925961

    config: "SecurityPolicyRuleMatcherConfig" = proto.Field(
        proto.MESSAGE,
        number=255820610,
        optional=True,
        message="SecurityPolicyRuleMatcherConfig",
    )
    expr: "Expr" = proto.Field(
        proto.MESSAGE,
        number=3127797,
        optional=True,
        message="Expr",
    )
    versioned_expr: str = proto.Field(
        proto.STRING,
        number=322286013,
        optional=True,
    )


class SecurityPolicyRuleMatcherConfig(proto.Message):
    r"""

    Attributes:
        src_ip_ranges (MutableSequence[str]):
            CIDR IP address range. Maximum number of src_ip_ranges
            allowed is 10.
    """

    src_ip_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=432128083,
    )


class SecurityPolicyRulePreconfiguredWafConfig(proto.Message):
    r"""

    Attributes:
        exclusions (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfigExclusion]):
            A list of exclusions to apply during
            preconfigured WAF evaluation.
    """

    exclusions: MutableSequence[
        "SecurityPolicyRulePreconfiguredWafConfigExclusion"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=208665701,
        message="SecurityPolicyRulePreconfiguredWafConfigExclusion",
    )


class SecurityPolicyRulePreconfiguredWafConfigExclusion(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        request_cookies_to_exclude (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams]):
            A list of request cookie names whose value
            will be excluded from inspection during
            preconfigured WAF evaluation.
        request_headers_to_exclude (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams]):
            A list of request header names whose value
            will be excluded from inspection during
            preconfigured WAF evaluation.
        request_query_params_to_exclude (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams]):
            A list of request query parameter names whose
            value will be excluded from inspection during
            preconfigured WAF evaluation. Note that the
            parameter can be in the query string or in the
            POST body.
        request_uris_to_exclude (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams]):
            A list of request URIs from the request line
            to be excluded from inspection during
            preconfigured WAF evaluation. When specifying
            this field, the query or fragment part should be
            excluded.
        target_rule_ids (MutableSequence[str]):
            A list of target rule IDs under the WAF rule
            set to apply the preconfigured WAF exclusion. If
            omitted, it refers to all the rule IDs under the
            WAF rule set.
        target_rule_set (str):
            Target WAF rule set to apply the
            preconfigured WAF exclusion.

            This field is a member of `oneof`_ ``_target_rule_set``.
    """

    request_cookies_to_exclude: MutableSequence[
        "SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=156757878,
        message="SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams",
    )
    request_headers_to_exclude: MutableSequence[
        "SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=63230495,
        message="SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams",
    )
    request_query_params_to_exclude: MutableSequence[
        "SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=340692744,
        message="SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams",
    )
    request_uris_to_exclude: MutableSequence[
        "SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=90690846,
        message="SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams",
    )
    target_rule_ids: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=498430435,
    )
    target_rule_set: str = proto.Field(
        proto.STRING,
        number=498440077,
        optional=True,
    )


class SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        op (str):
            The match operator for the field.
            Check the Op enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_op``.
        val (str):
            The value of the field.

            This field is a member of `oneof`_ ``_val``.
    """

    class Op(proto.Enum):
        r"""The match operator for the field.

        Values:
            UNDEFINED_OP (0):
                A value indicating that the enum field is not
                set.
            CONTAINS (215180831):
                The operator matches if the field value
                contains the specified value.
            ENDS_WITH (490402221):
                The operator matches if the field value ends
                with the specified value.
            EQUALS (442201023):
                The operator matches if the field value
                equals the specified value.
            EQUALS_ANY (337226060):
                The operator matches if the field value is
                any value.
            STARTS_WITH (139505652):
                The operator matches if the field value
                starts with the specified value.
        """
        UNDEFINED_OP = 0
        CONTAINS = 215180831
        ENDS_WITH = 490402221
        EQUALS = 442201023
        EQUALS_ANY = 337226060
        STARTS_WITH = 139505652

    op: str = proto.Field(
        proto.STRING,
        number=3553,
        optional=True,
    )
    val: str = proto.Field(
        proto.STRING,
        number=116513,
        optional=True,
    )


class SecurityPolicyRuleRateLimitOptions(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ban_duration_sec (int):
            Can only be specified if the action for the rule is
            "rate_based_ban". If specified, determines the time (in
            seconds) the traffic will continue to be banned by the rate
            limit after the rate falls below the threshold.

            This field is a member of `oneof`_ ``_ban_duration_sec``.
        ban_threshold (google.cloud.compute_v1.types.SecurityPolicyRuleRateLimitOptionsThreshold):
            Can only be specified if the action for the rule is
            "rate_based_ban". If specified, the key will be banned for
            the configured 'ban_duration_sec' when the number of
            requests that exceed the 'rate_limit_threshold' also exceed
            this 'ban_threshold'.

            This field is a member of `oneof`_ ``_ban_threshold``.
        conform_action (str):
            Action to take for requests that are under
            the configured rate limit threshold. Valid
            option is "allow" only.

            This field is a member of `oneof`_ ``_conform_action``.
        enforce_on_key (str):
            Determines the key to enforce the rate_limit_threshold on.
            Possible values are: - ALL: A single rate limit threshold is
            applied to all the requests matching this rule. This is the
            default value if "enforceOnKey" is not configured. - IP: The
            source IP address of the request is the key. Each IP has
            this limit enforced separately. - HTTP_HEADER: The value of
            the HTTP header whose name is configured under
            "enforceOnKeyName". The key value is truncated to the first
            128 bytes of the header value. If no such header is present
            in the request, the key type defaults to ALL. - XFF_IP: The
            first IP address (i.e. the originating client IP address)
            specified in the list of IPs under X-Forwarded-For HTTP
            header. If no such header is present or the value is not a
            valid IP, the key defaults to the source IP address of the
            request i.e. key type IP. - HTTP_COOKIE: The value of the
            HTTP cookie whose name is configured under
            "enforceOnKeyName". The key value is truncated to the first
            128 bytes of the cookie value. If no such cookie is present
            in the request, the key type defaults to ALL. - HTTP_PATH:
            The URL path of the HTTP request. The key value is truncated
            to the first 128 bytes. - SNI: Server name indication in the
            TLS session of the HTTPS request. The key value is truncated
            to the first 128 bytes. The key type defaults to ALL on a
            HTTP session. - REGION_CODE: The country/region from which
            the request originates. Check the EnforceOnKey enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_enforce_on_key``.
        enforce_on_key_name (str):
            Rate limit key name applicable only for the following key
            types: HTTP_HEADER -- Name of the HTTP header whose value is
            taken as the key value. HTTP_COOKIE -- Name of the HTTP
            cookie whose value is taken as the key value.

            This field is a member of `oneof`_ ``_enforce_on_key_name``.
        exceed_action (str):
            Action to take for requests that are above the configured
            rate limit threshold, to either deny with a specified HTTP
            response code, or redirect to a different endpoint. Valid
            options are ``deny(STATUS)``, where valid values for
            ``STATUS`` are 403, 404, 429, and 502, and ``redirect``,
            where the redirect parameters come from
            ``exceedRedirectOptions`` below.

            This field is a member of `oneof`_ ``_exceed_action``.
        exceed_redirect_options (google.cloud.compute_v1.types.SecurityPolicyRuleRedirectOptions):
            Parameters defining the redirect action that
            is used as the exceed action. Cannot be
            specified if the exceed action is not redirect.

            This field is a member of `oneof`_ ``_exceed_redirect_options``.
        rate_limit_threshold (google.cloud.compute_v1.types.SecurityPolicyRuleRateLimitOptionsThreshold):
            Threshold at which to begin ratelimiting.

            This field is a member of `oneof`_ ``_rate_limit_threshold``.
    """

    class EnforceOnKey(proto.Enum):
        r"""Determines the key to enforce the rate_limit_threshold on. Possible
        values are: - ALL: A single rate limit threshold is applied to all
        the requests matching this rule. This is the default value if
        "enforceOnKey" is not configured. - IP: The source IP address of the
        request is the key. Each IP has this limit enforced separately. -
        HTTP_HEADER: The value of the HTTP header whose name is configured
        under "enforceOnKeyName". The key value is truncated to the first
        128 bytes of the header value. If no such header is present in the
        request, the key type defaults to ALL. - XFF_IP: The first IP
        address (i.e. the originating client IP address) specified in the
        list of IPs under X-Forwarded-For HTTP header. If no such header is
        present or the value is not a valid IP, the key defaults to the
        source IP address of the request i.e. key type IP. - HTTP_COOKIE:
        The value of the HTTP cookie whose name is configured under
        "enforceOnKeyName". The key value is truncated to the first 128
        bytes of the cookie value. If no such cookie is present in the
        request, the key type defaults to ALL. - HTTP_PATH: The URL path of
        the HTTP request. The key value is truncated to the first 128 bytes.
        - SNI: Server name indication in the TLS session of the HTTPS
        request. The key value is truncated to the first 128 bytes. The key
        type defaults to ALL on a HTTP session. - REGION_CODE: The
        country/region from which the request originates.

        Values:
            UNDEFINED_ENFORCE_ON_KEY (0):
                A value indicating that the enum field is not
                set.
            ALL (64897):
                No description available.
            HTTP_COOKIE (494981627):
                No description available.
            HTTP_HEADER (91597348):
                No description available.
            HTTP_PATH (311503228):
                No description available.
            IP (2343):
                No description available.
            REGION_CODE (79559768):
                No description available.
            SNI (82254):
                No description available.
            XFF_IP (438707118):
                No description available.
        """
        UNDEFINED_ENFORCE_ON_KEY = 0
        ALL = 64897
        HTTP_COOKIE = 494981627
        HTTP_HEADER = 91597348
        HTTP_PATH = 311503228
        IP = 2343
        REGION_CODE = 79559768
        SNI = 82254
        XFF_IP = 438707118

    ban_duration_sec: int = proto.Field(
        proto.INT32,
        number=42896726,
        optional=True,
    )
    ban_threshold: "SecurityPolicyRuleRateLimitOptionsThreshold" = proto.Field(
        proto.MESSAGE,
        number=501208123,
        optional=True,
        message="SecurityPolicyRuleRateLimitOptionsThreshold",
    )
    conform_action: str = proto.Field(
        proto.STRING,
        number=517612367,
        optional=True,
    )
    enforce_on_key: str = proto.Field(
        proto.STRING,
        number=416648956,
        optional=True,
    )
    enforce_on_key_name: str = proto.Field(
        proto.STRING,
        number=132555246,
        optional=True,
    )
    exceed_action: str = proto.Field(
        proto.STRING,
        number=167159073,
        optional=True,
    )
    exceed_redirect_options: "SecurityPolicyRuleRedirectOptions" = proto.Field(
        proto.MESSAGE,
        number=473646694,
        optional=True,
        message="SecurityPolicyRuleRedirectOptions",
    )
    rate_limit_threshold: "SecurityPolicyRuleRateLimitOptionsThreshold" = proto.Field(
        proto.MESSAGE,
        number=315875208,
        optional=True,
        message="SecurityPolicyRuleRateLimitOptionsThreshold",
    )


class SecurityPolicyRuleRateLimitOptionsThreshold(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        count (int):
            Number of HTTP(S) requests for calculating
            the threshold.

            This field is a member of `oneof`_ ``_count``.
        interval_sec (int):
            Interval over which the threshold is
            computed.

            This field is a member of `oneof`_ ``_interval_sec``.
    """

    count: int = proto.Field(
        proto.INT32,
        number=94851343,
        optional=True,
    )
    interval_sec: int = proto.Field(
        proto.INT32,
        number=41084375,
        optional=True,
    )


class SecurityPolicyRuleRedirectOptions(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target (str):
            Target for the redirect action. This is required if the type
            is EXTERNAL_302 and cannot be specified for
            GOOGLE_RECAPTCHA.

            This field is a member of `oneof`_ ``_target``.
        type_ (str):
            Type of the redirect action.
            Check the Type enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""Type of the redirect action.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            EXTERNAL_302 (395733761):
                No description available.
            GOOGLE_RECAPTCHA (518803009):
                No description available.
        """
        UNDEFINED_TYPE = 0
        EXTERNAL_302 = 395733761
        GOOGLE_RECAPTCHA = 518803009

    target: str = proto.Field(
        proto.STRING,
        number=192835985,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class SecuritySettings(proto.Message):
    r"""The authentication and authorization settings for a
    BackendService.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        client_tls_policy (str):
            Optional. A URL referring to a
            networksecurity.ClientTlsPolicy resource that describes how
            clients should authenticate with this service's backends.
            clientTlsPolicy only applies to a global BackendService with
            the loadBalancingScheme set to INTERNAL_SELF_MANAGED. If
            left blank, communications are not encrypted. Note: This
            field currently has no impact.

            This field is a member of `oneof`_ ``_client_tls_policy``.
        subject_alt_names (MutableSequence[str]):
            Optional. A list of Subject Alternative Names (SANs) that
            the client verifies during a mutual TLS handshake with an
            server/endpoint for this BackendService. When the server
            presents its X.509 certificate to the client, the client
            inspects the certificate's subjectAltName field. If the
            field contains one of the specified values, the
            communication continues. Otherwise, it fails. This
            additional check enables the client to verify that the
            server is authorized to run the requested service. Note that
            the contents of the server certificate's subjectAltName
            field are configured by the Public Key Infrastructure which
            provisions server identities. Only applies to a global
            BackendService with loadBalancingScheme set to
            INTERNAL_SELF_MANAGED. Only applies when BackendService has
            an attached clientTlsPolicy with clientCertificate (mTLS
            mode). Note: This field currently has no impact.
    """

    client_tls_policy: str = proto.Field(
        proto.STRING,
        number=462325226,
        optional=True,
    )
    subject_alt_names: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=330029535,
    )


class SendDiagnosticInterruptInstanceRequest(proto.Message):
    r"""A request message for Instances.SendDiagnosticInterrupt. See
    the method description for details.

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SendDiagnosticInterruptInstanceResponse(proto.Message):
    r"""A response message for Instances.SendDiagnosticInterrupt. See
    the method description for details.

    """


class SerialPortOutput(proto.Message):
    r"""An instance serial console output.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        contents (str):
            [Output Only] The contents of the console output.

            This field is a member of `oneof`_ ``_contents``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#serialPortOutput for serial port output.

            This field is a member of `oneof`_ ``_kind``.
        next_ (int):
            [Output Only] The position of the next byte of content,
            regardless of whether the content exists, following the
            output returned in the ``contents`` property. Use this value
            in the next request as the start parameter.

            This field is a member of `oneof`_ ``_next``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        start (int):
            The starting byte position of the output that was returned.
            This should match the start parameter sent with the request.
            If the serial console output exceeds the size of the buffer
            (1 MB), older output is overwritten by newer content. The
            output start value will indicate the byte position of the
            output that was returned, which might be different than the
            ``start`` value that was specified in the request.

            This field is a member of `oneof`_ ``_start``.
    """

    contents: str = proto.Field(
        proto.STRING,
        number=506419994,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_: int = proto.Field(
        proto.INT64,
        number=3377907,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    start: int = proto.Field(
        proto.INT64,
        number=109757538,
        optional=True,
    )


class ServerBinding(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        type_ (str):
            Check the Type enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            RESTART_NODE_ON_ANY_SERVER (502950985):
                Node may associate with any physical server
                over its lifetime.
            RESTART_NODE_ON_MINIMAL_SERVERS (204166495):
                Node may associate with minimal physical
                servers over its lifetime.
            SERVER_BINDING_TYPE_UNSPECIFIED (180825512):
                No description available.
        """
        UNDEFINED_TYPE = 0
        RESTART_NODE_ON_ANY_SERVER = 502950985
        RESTART_NODE_ON_MINIMAL_SERVERS = 204166495
        SERVER_BINDING_TYPE_UNSPECIFIED = 180825512

    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class ServiceAccount(proto.Message):
    r"""A service account.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        email (str):
            Email address of the service account.

            This field is a member of `oneof`_ ``_email``.
        scopes (MutableSequence[str]):
            The list of scopes to be made available for
            this service account.
    """

    email: str = proto.Field(
        proto.STRING,
        number=96619420,
        optional=True,
    )
    scopes: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=165973151,
    )


class ServiceAttachment(proto.Message):
    r"""Represents a ServiceAttachment resource. A service attachment
    represents a service that a producer has exposed. It
    encapsulates the load balancer which fronts the service runs and
    a list of NAT IP ranges that the producers uses to represent the
    consumers connecting to the service. next tag = 20


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        connected_endpoints (MutableSequence[google.cloud.compute_v1.types.ServiceAttachmentConnectedEndpoint]):
            [Output Only] An array of connections for all the consumers
            connected to this service attachment.
        connection_preference (str):
            The connection preference of service attachment. The value
            can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service
            attachment is one that always accepts the connection from
            consumer forwarding rules. Check the ConnectionPreference
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_connection_preference``.
        consumer_accept_lists (MutableSequence[google.cloud.compute_v1.types.ServiceAttachmentConsumerProjectLimit]):
            Projects that are allowed to connect to this
            service attachment.
        consumer_reject_lists (MutableSequence[str]):
            Projects that are not allowed to connect to
            this service attachment. The project can be
            specified using its id or number.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        domain_names (MutableSequence[str]):
            If specified, the domain name will be used
            during the integration between the PSC connected
            endpoints and the Cloud DNS. For example, this
            is a valid domain name: "p.mycompany.com.".
            Current max number of domain names supported is
            1.
        enable_proxy_protocol (bool):
            If true, enable the proxy protocol which is
            for supplying client TCP/IP address data in TCP
            connections that traverse proxies on their way
            to destination servers.

            This field is a member of `oneof`_ ``_enable_proxy_protocol``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a ServiceAttachment. An
            up-to-date fingerprint must be provided in order
            to patch/update the ServiceAttachment;
            otherwise, the request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve the
            ServiceAttachment.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource type.
            The server generates this identifier.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#serviceAttachment for service attachments.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        nat_subnets (MutableSequence[str]):
            An array of URLs where each entry is the URL
            of a subnet provided by the service producer to
            use for NAT in this service attachment.
        producer_forwarding_rule (str):
            The URL of a forwarding rule with loadBalancingScheme
            INTERNAL\* that is serving the endpoint identified by this
            service attachment.

            This field is a member of `oneof`_ ``_producer_forwarding_rule``.
        psc_service_attachment_id (google.cloud.compute_v1.types.Uint128):
            [Output Only] An 128-bit global unique ID of the PSC service
            attachment.

            This field is a member of `oneof`_ ``_psc_service_attachment_id``.
        region (str):
            [Output Only] URL of the region where the service attachment
            resides. This field applies only to the region resource. You
            must specify this field as part of the HTTP request URL. It
            is not settable as a field in the request body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        target_service (str):
            The URL of a service serving the endpoint
            identified by this service attachment.

            This field is a member of `oneof`_ ``_target_service``.
    """

    class ConnectionPreference(proto.Enum):
        r"""The connection preference of service attachment. The value can be
        set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is
        one that always accepts the connection from consumer forwarding
        rules.

        Values:
            UNDEFINED_CONNECTION_PREFERENCE (0):
                A value indicating that the enum field is not
                set.
            ACCEPT_AUTOMATIC (75250580):
                No description available.
            ACCEPT_MANUAL (373061341):
                No description available.
            CONNECTION_PREFERENCE_UNSPECIFIED (34590772):
                No description available.
        """
        UNDEFINED_CONNECTION_PREFERENCE = 0
        ACCEPT_AUTOMATIC = 75250580
        ACCEPT_MANUAL = 373061341
        CONNECTION_PREFERENCE_UNSPECIFIED = 34590772

    connected_endpoints: MutableSequence[
        "ServiceAttachmentConnectedEndpoint"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=72223688,
        message="ServiceAttachmentConnectedEndpoint",
    )
    connection_preference: str = proto.Field(
        proto.STRING,
        number=285818076,
        optional=True,
    )
    consumer_accept_lists: MutableSequence[
        "ServiceAttachmentConsumerProjectLimit"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=402725703,
        message="ServiceAttachmentConsumerProjectLimit",
    )
    consumer_reject_lists: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=204033182,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    domain_names: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=6450189,
    )
    enable_proxy_protocol: bool = proto.Field(
        proto.BOOL,
        number=363791237,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    nat_subnets: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=374785944,
    )
    producer_forwarding_rule: str = proto.Field(
        proto.STRING,
        number=247927889,
        optional=True,
    )
    psc_service_attachment_id: "Uint128" = proto.Field(
        proto.MESSAGE,
        number=527695214,
        optional=True,
        message="Uint128",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    target_service: str = proto.Field(
        proto.STRING,
        number=1293831,
        optional=True,
    )


class ServiceAttachmentAggregatedList(proto.Message):
    r"""Contains a list of ServiceAttachmentsScopedList.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.ServiceAttachmentsScopedList]):
            A list of ServiceAttachmentsScopedList
            resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "ServiceAttachmentsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="ServiceAttachmentsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ServiceAttachmentConnectedEndpoint(proto.Message):
    r"""[Output Only] A connection connected to this service attachment.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        endpoint (str):
            The url of a connected endpoint.

            This field is a member of `oneof`_ ``_endpoint``.
        psc_connection_id (int):
            The PSC connection id of the connected
            endpoint.

            This field is a member of `oneof`_ ``_psc_connection_id``.
        status (str):
            The status of a connected endpoint to this
            service attachment. Check the Status enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_status``.
    """

    class Status(proto.Enum):
        r"""The status of a connected endpoint to this service
        attachment.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            ACCEPTED (246714279):
                The connection has been accepted by the
                producer.
            CLOSED (380163436):
                The connection has been closed by the
                producer.
            NEEDS_ATTENTION (344491452):
                The connection has been accepted by the
                producer, but the producer needs to take further
                action before the forwarding rule can serve
                traffic.
            PENDING (35394935):
                The connection is pending acceptance by the
                producer.
            REJECTED (174130302):
                The consumer is still connected but not using
                the connection.
            STATUS_UNSPECIFIED (42133066):
                No description available.
        """
        UNDEFINED_STATUS = 0
        ACCEPTED = 246714279
        CLOSED = 380163436
        NEEDS_ATTENTION = 344491452
        PENDING = 35394935
        REJECTED = 174130302
        STATUS_UNSPECIFIED = 42133066

    endpoint: str = proto.Field(
        proto.STRING,
        number=130489749,
        optional=True,
    )
    psc_connection_id: int = proto.Field(
        proto.UINT64,
        number=292082397,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )


class ServiceAttachmentConsumerProjectLimit(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        connection_limit (int):
            The value of the limit to set.

            This field is a member of `oneof`_ ``_connection_limit``.
        network_url (str):
            The network URL for the network to set the
            limit for.

            This field is a member of `oneof`_ ``_network_url``.
        project_id_or_num (str):
            The project id or number for the project to
            set the limit for.

            This field is a member of `oneof`_ ``_project_id_or_num``.
    """

    connection_limit: int = proto.Field(
        proto.UINT32,
        number=131403546,
        optional=True,
    )
    network_url: str = proto.Field(
        proto.STRING,
        number=207194078,
        optional=True,
    )
    project_id_or_num: str = proto.Field(
        proto.STRING,
        number=349783336,
        optional=True,
    )


class ServiceAttachmentList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.ServiceAttachment]):
            A list of ServiceAttachment resources.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#serviceAttachment for service attachments.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["ServiceAttachment"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="ServiceAttachment",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ServiceAttachmentsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        service_attachments (MutableSequence[google.cloud.compute_v1.types.ServiceAttachment]):
            A list of ServiceAttachments contained in
            this scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of service attachments when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    service_attachments: MutableSequence["ServiceAttachment"] = proto.RepeatedField(
        proto.MESSAGE,
        number=307136806,
        message="ServiceAttachment",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SetBackendServiceTargetSslProxyRequest(proto.Message):
    r"""A request message for TargetSslProxies.SetBackendService. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_ssl_proxies_set_backend_service_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetBackendServiceRequest):
            The body resource for this request
        target_ssl_proxy (str):
            Name of the TargetSslProxy resource whose
            BackendService resource is to be set.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_ssl_proxies_set_backend_service_request_resource: "TargetSslProxiesSetBackendServiceRequest" = proto.Field(
        proto.MESSAGE,
        number=139080868,
        message="TargetSslProxiesSetBackendServiceRequest",
    )
    target_ssl_proxy: str = proto.Field(
        proto.STRING,
        number=338795853,
    )


class SetBackendServiceTargetTcpProxyRequest(proto.Message):
    r"""A request message for TargetTcpProxies.SetBackendService. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_tcp_proxies_set_backend_service_request_resource (google.cloud.compute_v1.types.TargetTcpProxiesSetBackendServiceRequest):
            The body resource for this request
        target_tcp_proxy (str):
            Name of the TargetTcpProxy resource whose
            BackendService resource is to be set.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_tcp_proxies_set_backend_service_request_resource: "TargetTcpProxiesSetBackendServiceRequest" = proto.Field(
        proto.MESSAGE,
        number=273721583,
        message="TargetTcpProxiesSetBackendServiceRequest",
    )
    target_tcp_proxy: str = proto.Field(
        proto.STRING,
        number=503065442,
    )


class SetBackupTargetPoolRequest(proto.Message):
    r"""A request message for TargetPools.SetBackup. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        failover_ratio (float):
            New failoverRatio value for the target pool.

            This field is a member of `oneof`_ ``_failover_ratio``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_pool (str):
            Name of the TargetPool resource to set a
            backup pool for.
        target_reference_resource (google.cloud.compute_v1.types.TargetReference):
            The body resource for this request
    """

    failover_ratio: float = proto.Field(
        proto.FLOAT,
        number=212667006,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_pool: str = proto.Field(
        proto.STRING,
        number=62796298,
    )
    target_reference_resource: "TargetReference" = proto.Field(
        proto.MESSAGE,
        number=523721712,
        message="TargetReference",
    )


class SetCertificateMapTargetHttpsProxyRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.SetCertificateMap.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxies_set_certificate_map_request_resource (google.cloud.compute_v1.types.TargetHttpsProxiesSetCertificateMapRequest):
            The body resource for this request
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource whose
            CertificateMap is to be set. The name must be
            1-63 characters long, and comply with RFC1035.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxies_set_certificate_map_request_resource: "TargetHttpsProxiesSetCertificateMapRequest" = proto.Field(
        proto.MESSAGE,
        number=467639099,
        message="TargetHttpsProxiesSetCertificateMapRequest",
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )


class SetCertificateMapTargetSslProxyRequest(proto.Message):
    r"""A request message for TargetSslProxies.SetCertificateMap. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_ssl_proxies_set_certificate_map_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetCertificateMapRequest):
            The body resource for this request
        target_ssl_proxy (str):
            Name of the TargetSslProxy resource whose
            CertificateMap is to be set. The name must be
            1-63 characters long, and comply with RFC1035.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_ssl_proxies_set_certificate_map_request_resource: "TargetSslProxiesSetCertificateMapRequest" = proto.Field(
        proto.MESSAGE,
        number=343984954,
        message="TargetSslProxiesSetCertificateMapRequest",
    )
    target_ssl_proxy: str = proto.Field(
        proto.STRING,
        number=338795853,
    )


class SetCommonInstanceMetadataProjectRequest(proto.Message):
    r"""A request message for Projects.SetCommonInstanceMetadata. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        metadata_resource (google.cloud.compute_v1.types.Metadata):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    metadata_resource: "Metadata" = proto.Field(
        proto.MESSAGE,
        number=291086110,
        message="Metadata",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class SetDefaultNetworkTierProjectRequest(proto.Message):
    r"""A request message for Projects.SetDefaultNetworkTier. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        projects_set_default_network_tier_request_resource (google.cloud.compute_v1.types.ProjectsSetDefaultNetworkTierRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    projects_set_default_network_tier_request_resource: "ProjectsSetDefaultNetworkTierRequest" = proto.Field(
        proto.MESSAGE,
        number=126410762,
        message="ProjectsSetDefaultNetworkTierRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class SetDeletionProtectionInstanceRequest(proto.Message):
    r"""A request message for Instances.SetDeletionProtection. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        deletion_protection (bool):
            Whether the resource should be protected
            against deletion.

            This field is a member of `oneof`_ ``_deletion_protection``.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
    """

    deletion_protection: bool = proto.Field(
        proto.BOOL,
        number=458014698,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetDiskAutoDeleteInstanceRequest(proto.Message):
    r"""A request message for Instances.SetDiskAutoDelete. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_delete (bool):
            Whether to auto-delete the disk when the
            instance is deleted.
        device_name (str):
            The device name of the disk to modify. Make a
            get() request on the instance to view currently
            attached disks and device names.
        instance (str):
            The instance name for this request.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    auto_delete: bool = proto.Field(
        proto.BOOL,
        number=464761403,
    )
    device_name: str = proto.Field(
        proto.STRING,
        number=67541716,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetEdgeSecurityPolicyBackendBucketRequest(proto.Message):
    r"""A request message for BackendBuckets.SetEdgeSecurityPolicy.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_bucket (str):
            Name of the BackendService resource to which
            the security policy should be set. The name
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
            The body resource for this request
    """

    backend_bucket: str = proto.Field(
        proto.STRING,
        number=91714037,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    security_policy_reference_resource: "SecurityPolicyReference" = proto.Field(
        proto.MESSAGE,
        number=204135024,
        message="SecurityPolicyReference",
    )


class SetEdgeSecurityPolicyBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.SetEdgeSecurityPolicy.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to which
            the edge security policy should be set. The name
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
            The body resource for this request
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    security_policy_reference_resource: "SecurityPolicyReference" = proto.Field(
        proto.MESSAGE,
        number=204135024,
        message="SecurityPolicyReference",
    )


class SetIamPolicyBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.SetIamPolicy. See the
    method description for details.

    Attributes:
        global_set_policy_request_resource (google.cloud.compute_v1.types.GlobalSetPolicyRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_policy_request_resource: "GlobalSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=337048498,
        message="GlobalSetPolicyRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyDiskRequest(proto.Message):
    r"""A request message for Disks.SetIamPolicy. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
        zone_set_policy_request_resource (google.cloud.compute_v1.types.ZoneSetPolicyRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )
    zone_set_policy_request_resource: "ZoneSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=382082107,
        message="ZoneSetPolicyRequest",
    )


class SetIamPolicyFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.SetIamPolicy. See the
    method description for details.

    Attributes:
        global_organization_set_policy_request_resource (google.cloud.compute_v1.types.GlobalOrganizationSetPolicyRequest):
            The body resource for this request
        resource (str):
            Name or id of the resource for this request.
    """

    global_organization_set_policy_request_resource: "GlobalOrganizationSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=177408606,
        message="GlobalOrganizationSetPolicyRequest",
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyImageRequest(proto.Message):
    r"""A request message for Images.SetIamPolicy. See the method
    description for details.

    Attributes:
        global_set_policy_request_resource (google.cloud.compute_v1.types.GlobalSetPolicyRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_policy_request_resource: "GlobalSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=337048498,
        message="GlobalSetPolicyRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyInstanceRequest(proto.Message):
    r"""A request message for Instances.SetIamPolicy. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
        zone_set_policy_request_resource (google.cloud.compute_v1.types.ZoneSetPolicyRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )
    zone_set_policy_request_resource: "ZoneSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=382082107,
        message="ZoneSetPolicyRequest",
    )


class SetIamPolicyInstanceTemplateRequest(proto.Message):
    r"""A request message for InstanceTemplates.SetIamPolicy. See the
    method description for details.

    Attributes:
        global_set_policy_request_resource (google.cloud.compute_v1.types.GlobalSetPolicyRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_policy_request_resource: "GlobalSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=337048498,
        message="GlobalSetPolicyRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyLicenseRequest(proto.Message):
    r"""A request message for Licenses.SetIamPolicy. See the method
    description for details.

    Attributes:
        global_set_policy_request_resource (google.cloud.compute_v1.types.GlobalSetPolicyRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_policy_request_resource: "GlobalSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=337048498,
        message="GlobalSetPolicyRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyMachineImageRequest(proto.Message):
    r"""A request message for MachineImages.SetIamPolicy. See the
    method description for details.

    Attributes:
        global_set_policy_request_resource (google.cloud.compute_v1.types.GlobalSetPolicyRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_policy_request_resource: "GlobalSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=337048498,
        message="GlobalSetPolicyRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyNetworkAttachmentRequest(proto.Message):
    r"""A request message for NetworkAttachments.SetIamPolicy. See
    the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_set_policy_request_resource (google.cloud.compute_v1.types.RegionSetPolicyRequest):
            The body resource for this request
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_policy_request_resource: "RegionSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=276489091,
        message="RegionSetPolicyRequest",
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for NetworkFirewallPolicies.SetIamPolicy.
    See the method description for details.

    Attributes:
        global_set_policy_request_resource (google.cloud.compute_v1.types.GlobalSetPolicyRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_policy_request_resource: "GlobalSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=337048498,
        message="GlobalSetPolicyRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.SetIamPolicy. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
        zone_set_policy_request_resource (google.cloud.compute_v1.types.ZoneSetPolicyRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )
    zone_set_policy_request_resource: "ZoneSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=382082107,
        message="ZoneSetPolicyRequest",
    )


class SetIamPolicyNodeTemplateRequest(proto.Message):
    r"""A request message for NodeTemplates.SetIamPolicy. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_set_policy_request_resource (google.cloud.compute_v1.types.RegionSetPolicyRequest):
            The body resource for this request
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_policy_request_resource: "RegionSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=276489091,
        message="RegionSetPolicyRequest",
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyRegionBackendServiceRequest(proto.Message):
    r"""A request message for RegionBackendServices.SetIamPolicy. See
    the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_set_policy_request_resource (google.cloud.compute_v1.types.RegionSetPolicyRequest):
            The body resource for this request
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_policy_request_resource: "RegionSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=276489091,
        message="RegionSetPolicyRequest",
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.SetIamPolicy. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_set_policy_request_resource (google.cloud.compute_v1.types.RegionSetPolicyRequest):
            The body resource for this request
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_policy_request_resource: "RegionSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=276489091,
        message="RegionSetPolicyRequest",
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.SetIamPolicy. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_set_policy_request_resource (google.cloud.compute_v1.types.RegionSetPolicyRequest):
            The body resource for this request
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_policy_request_resource: "RegionSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=276489091,
        message="RegionSetPolicyRequest",
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyReservationRequest(proto.Message):
    r"""A request message for Reservations.SetIamPolicy. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
        zone_set_policy_request_resource (google.cloud.compute_v1.types.ZoneSetPolicyRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )
    zone_set_policy_request_resource: "ZoneSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=382082107,
        message="ZoneSetPolicyRequest",
    )


class SetIamPolicyResourcePolicyRequest(proto.Message):
    r"""A request message for ResourcePolicies.SetIamPolicy. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_set_policy_request_resource (google.cloud.compute_v1.types.RegionSetPolicyRequest):
            The body resource for this request
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_policy_request_resource: "RegionSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=276489091,
        message="RegionSetPolicyRequest",
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicyServiceAttachmentRequest(proto.Message):
    r"""A request message for ServiceAttachments.SetIamPolicy. See
    the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_set_policy_request_resource (google.cloud.compute_v1.types.RegionSetPolicyRequest):
            The body resource for this request
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_policy_request_resource: "RegionSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=276489091,
        message="RegionSetPolicyRequest",
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicySnapshotRequest(proto.Message):
    r"""A request message for Snapshots.SetIamPolicy. See the method
    description for details.

    Attributes:
        global_set_policy_request_resource (google.cloud.compute_v1.types.GlobalSetPolicyRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_policy_request_resource: "GlobalSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=337048498,
        message="GlobalSetPolicyRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetIamPolicySubnetworkRequest(proto.Message):
    r"""A request message for Subnetworks.SetIamPolicy. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        region_set_policy_request_resource (google.cloud.compute_v1.types.RegionSetPolicyRequest):
            The body resource for this request
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_policy_request_resource: "RegionSetPolicyRequest" = proto.Field(
        proto.MESSAGE,
        number=276489091,
        message="RegionSetPolicyRequest",
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetInstanceTemplateInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    InstanceGroupManagers.SetInstanceTemplate. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group.
        instance_group_managers_set_instance_template_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersSetInstanceTemplateRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_set_instance_template_request_resource: "InstanceGroupManagersSetInstanceTemplateRequest" = proto.Field(
        proto.MESSAGE,
        number=9809093,
        message="InstanceGroupManagersSetInstanceTemplateRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetInstanceTemplateRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.SetInstanceTemplate. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        region_instance_group_managers_set_template_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersSetTemplateRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_managers_set_template_request_resource: "RegionInstanceGroupManagersSetTemplateRequest" = proto.Field(
        proto.MESSAGE,
        number=187310412,
        message="RegionInstanceGroupManagersSetTemplateRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class SetLabelsAddressRequest(proto.Message):
    r"""A request message for Addresses.SetLabels. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The region for this request.
        region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=259357782,
        message="RegionSetLabelsRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsDiskRequest(proto.Message):
    r"""A request message for Disks.SetLabels. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource (str):
            Name or id of the resource for this request.
        zone (str):
            The name of the zone for this request.
        zone_set_labels_request_resource (google.cloud.compute_v1.types.ZoneSetLabelsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )
    zone_set_labels_request_resource: "ZoneSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=364950798,
        message="ZoneSetLabelsRequest",
    )


class SetLabelsExternalVpnGatewayRequest(proto.Message):
    r"""A request message for ExternalVpnGateways.SetLabels. See the
    method description for details.

    Attributes:
        global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=319917189,
        message="GlobalSetLabelsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsForwardingRuleRequest(proto.Message):
    r"""A request message for ForwardingRules.SetLabels. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The region for this request.
        region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=259357782,
        message="RegionSetLabelsRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsGlobalAddressRequest(proto.Message):
    r"""A request message for GlobalAddresses.SetLabels. See the
    method description for details.

    Attributes:
        global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=319917189,
        message="GlobalSetLabelsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsGlobalForwardingRuleRequest(proto.Message):
    r"""A request message for GlobalForwardingRules.SetLabels. See
    the method description for details.

    Attributes:
        global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=319917189,
        message="GlobalSetLabelsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsImageRequest(proto.Message):
    r"""A request message for Images.SetLabels. See the method
    description for details.

    Attributes:
        global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=319917189,
        message="GlobalSetLabelsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsInstanceRequest(proto.Message):
    r"""A request message for Instances.SetLabels. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        instances_set_labels_request_resource (google.cloud.compute_v1.types.InstancesSetLabelsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instances_set_labels_request_resource: "InstancesSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=207749344,
        message="InstancesSetLabelsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetLabelsInterconnectAttachmentRequest(proto.Message):
    r"""A request message for InterconnectAttachments.SetLabels. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The region for this request.
        region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=259357782,
        message="RegionSetLabelsRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsInterconnectRequest(proto.Message):
    r"""A request message for Interconnects.SetLabels. See the method
    description for details.

    Attributes:
        global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=319917189,
        message="GlobalSetLabelsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.SetLabels. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The region for this request.
        region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=259357782,
        message="RegionSetLabelsRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsSecurityPolicyRequest(proto.Message):
    r"""A request message for SecurityPolicies.SetLabels. See the
    method description for details.

    Attributes:
        global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=319917189,
        message="GlobalSetLabelsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsSnapshotRequest(proto.Message):
    r"""A request message for Snapshots.SetLabels. See the method
    description for details.

    Attributes:
        global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
    """

    global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=319917189,
        message="GlobalSetLabelsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsTargetVpnGatewayRequest(proto.Message):
    r"""A request message for TargetVpnGateways.SetLabels. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The region for this request.
        region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=259357782,
        message="RegionSetLabelsRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsVpnGatewayRequest(proto.Message):
    r"""A request message for VpnGateways.SetLabels. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The region for this request.
        region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=259357782,
        message="RegionSetLabelsRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetLabelsVpnTunnelRequest(proto.Message):
    r"""A request message for VpnTunnels.SetLabels. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The region for this request.
        region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        resource (str):
            Name or id of the resource for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field(
        proto.MESSAGE,
        number=259357782,
        message="RegionSetLabelsRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )


class SetMachineResourcesInstanceRequest(proto.Message):
    r"""A request message for Instances.SetMachineResources. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        instances_set_machine_resources_request_resource (google.cloud.compute_v1.types.InstancesSetMachineResourcesRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instances_set_machine_resources_request_resource: "InstancesSetMachineResourcesRequest" = proto.Field(
        proto.MESSAGE,
        number=196286318,
        message="InstancesSetMachineResourcesRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetMachineTypeInstanceRequest(proto.Message):
    r"""A request message for Instances.SetMachineType. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        instances_set_machine_type_request_resource (google.cloud.compute_v1.types.InstancesSetMachineTypeRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instances_set_machine_type_request_resource: "InstancesSetMachineTypeRequest" = (
        proto.Field(
            proto.MESSAGE,
            number=254157709,
            message="InstancesSetMachineTypeRequest",
        )
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetMetadataInstanceRequest(proto.Message):
    r"""A request message for Instances.SetMetadata. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        metadata_resource (google.cloud.compute_v1.types.Metadata):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    metadata_resource: "Metadata" = proto.Field(
        proto.MESSAGE,
        number=291086110,
        message="Metadata",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetMinCpuPlatformInstanceRequest(proto.Message):
    r"""A request message for Instances.SetMinCpuPlatform. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        instances_set_min_cpu_platform_request_resource (google.cloud.compute_v1.types.InstancesSetMinCpuPlatformRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instances_set_min_cpu_platform_request_resource: "InstancesSetMinCpuPlatformRequest" = proto.Field(
        proto.MESSAGE,
        number=148459368,
        message="InstancesSetMinCpuPlatformRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetNameInstanceRequest(proto.Message):
    r"""A request message for Instances.SetName. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            The instance name for this request.
        instances_set_name_request_resource (google.cloud.compute_v1.types.InstancesSetNameRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instances_set_name_request_resource: "InstancesSetNameRequest" = proto.Field(
        proto.MESSAGE,
        number=272080980,
        message="InstancesSetNameRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetNamedPortsInstanceGroupRequest(proto.Message):
    r"""A request message for InstanceGroups.SetNamedPorts. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group (str):
            The name of the instance group where the
            named ports are updated.
        instance_groups_set_named_ports_request_resource (google.cloud.compute_v1.types.InstanceGroupsSetNamedPortsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the instance group
            is located.
    """

    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
    )
    instance_groups_set_named_ports_request_resource: "InstanceGroupsSetNamedPortsRequest" = proto.Field(
        proto.MESSAGE,
        number=385151535,
        message="InstanceGroupsSetNamedPortsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetNamedPortsRegionInstanceGroupRequest(proto.Message):
    r"""A request message for RegionInstanceGroups.SetNamedPorts. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group (str):
            The name of the regional instance group where
            the named ports are updated.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        region_instance_groups_set_named_ports_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupsSetNamedPortsRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group: str = proto.Field(
        proto.STRING,
        number=81095253,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_groups_set_named_ports_request_resource: "RegionInstanceGroupsSetNamedPortsRequest" = proto.Field(
        proto.MESSAGE,
        number=1574938,
        message="RegionInstanceGroupsSetNamedPortsRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class SetNodeTemplateNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.SetNodeTemplate. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_group (str):
            Name of the NodeGroup resource to update.
        node_groups_set_node_template_request_resource (google.cloud.compute_v1.types.NodeGroupsSetNodeTemplateRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    node_group: str = proto.Field(
        proto.STRING,
        number=469958146,
    )
    node_groups_set_node_template_request_resource: "NodeGroupsSetNodeTemplateRequest" = proto.Field(
        proto.MESSAGE,
        number=117382321,
        message="NodeGroupsSetNodeTemplateRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetPrivateIpGoogleAccessSubnetworkRequest(proto.Message):
    r"""A request message for Subnetworks.SetPrivateIpGoogleAccess.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        subnetwork (str):
            Name of the Subnetwork resource.
        subnetworks_set_private_ip_google_access_request_resource (google.cloud.compute_v1.types.SubnetworksSetPrivateIpGoogleAccessRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
    )
    subnetworks_set_private_ip_google_access_request_resource: "SubnetworksSetPrivateIpGoogleAccessRequest" = proto.Field(
        proto.MESSAGE,
        number=268920696,
        message="SubnetworksSetPrivateIpGoogleAccessRequest",
    )


class SetProxyHeaderTargetSslProxyRequest(proto.Message):
    r"""A request message for TargetSslProxies.SetProxyHeader. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_ssl_proxies_set_proxy_header_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetProxyHeaderRequest):
            The body resource for this request
        target_ssl_proxy (str):
            Name of the TargetSslProxy resource whose
            ProxyHeader is to be set.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_ssl_proxies_set_proxy_header_request_resource: "TargetSslProxiesSetProxyHeaderRequest" = proto.Field(
        proto.MESSAGE,
        number=205284526,
        message="TargetSslProxiesSetProxyHeaderRequest",
    )
    target_ssl_proxy: str = proto.Field(
        proto.STRING,
        number=338795853,
    )


class SetProxyHeaderTargetTcpProxyRequest(proto.Message):
    r"""A request message for TargetTcpProxies.SetProxyHeader. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_tcp_proxies_set_proxy_header_request_resource (google.cloud.compute_v1.types.TargetTcpProxiesSetProxyHeaderRequest):
            The body resource for this request
        target_tcp_proxy (str):
            Name of the TargetTcpProxy resource whose
            ProxyHeader is to be set.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_tcp_proxies_set_proxy_header_request_resource: "TargetTcpProxiesSetProxyHeaderRequest" = proto.Field(
        proto.MESSAGE,
        number=219958339,
        message="TargetTcpProxiesSetProxyHeaderRequest",
    )
    target_tcp_proxy: str = proto.Field(
        proto.STRING,
        number=503065442,
    )


class SetQuicOverrideTargetHttpsProxyRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.SetQuicOverride. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxies_set_quic_override_request_resource (google.cloud.compute_v1.types.TargetHttpsProxiesSetQuicOverrideRequest):
            The body resource for this request
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource to set
            the QUIC override policy for. The name should
            conform to RFC1035.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxies_set_quic_override_request_resource: "TargetHttpsProxiesSetQuicOverrideRequest" = proto.Field(
        proto.MESSAGE,
        number=72940258,
        message="TargetHttpsProxiesSetQuicOverrideRequest",
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )


class SetSchedulingInstanceRequest(proto.Message):
    r"""A request message for Instances.SetScheduling. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Instance name for this request.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        scheduling_resource (google.cloud.compute_v1.types.Scheduling):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    scheduling_resource: "Scheduling" = proto.Field(
        proto.MESSAGE,
        number=463181401,
        message="Scheduling",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetSecurityPolicyBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.SetSecurityPolicy. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to which
            the security policy should be set. The name
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
            The body resource for this request
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    security_policy_reference_resource: "SecurityPolicyReference" = proto.Field(
        proto.MESSAGE,
        number=204135024,
        message="SecurityPolicyReference",
    )


class SetServiceAccountInstanceRequest(proto.Message):
    r"""A request message for Instances.SetServiceAccount. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance resource to start.
        instances_set_service_account_request_resource (google.cloud.compute_v1.types.InstancesSetServiceAccountRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instances_set_service_account_request_resource: "InstancesSetServiceAccountRequest" = proto.Field(
        proto.MESSAGE,
        number=275550008,
        message="InstancesSetServiceAccountRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetShieldedInstanceIntegrityPolicyInstanceRequest(proto.Message):
    r"""A request message for
    Instances.SetShieldedInstanceIntegrityPolicy. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name or id of the instance scoping this
            request.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        shielded_instance_integrity_policy_resource (google.cloud.compute_v1.types.ShieldedInstanceIntegrityPolicy):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    shielded_instance_integrity_policy_resource: "ShieldedInstanceIntegrityPolicy" = (
        proto.Field(
            proto.MESSAGE,
            number=409169462,
            message="ShieldedInstanceIntegrityPolicy",
        )
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetSslCertificatesRegionTargetHttpsProxyRequest(proto.Message):
    r"""A request message for
    RegionTargetHttpsProxies.SetSslCertificates. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        region_target_https_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.RegionTargetHttpsProxiesSetSslCertificatesRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource to set
            an SslCertificates resource for.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_target_https_proxies_set_ssl_certificates_request_resource: "RegionTargetHttpsProxiesSetSslCertificatesRequest" = proto.Field(
        proto.MESSAGE,
        number=390693383,
        message="RegionTargetHttpsProxiesSetSslCertificatesRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )


class SetSslCertificatesTargetHttpsProxyRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.SetSslCertificates.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.TargetHttpsProxiesSetSslCertificatesRequest):
            The body resource for this request
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource to set
            an SslCertificates resource for.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxies_set_ssl_certificates_request_resource: "TargetHttpsProxiesSetSslCertificatesRequest" = proto.Field(
        proto.MESSAGE,
        number=223122908,
        message="TargetHttpsProxiesSetSslCertificatesRequest",
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )


class SetSslCertificatesTargetSslProxyRequest(proto.Message):
    r"""A request message for TargetSslProxies.SetSslCertificates.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_ssl_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetSslCertificatesRequest):
            The body resource for this request
        target_ssl_proxy (str):
            Name of the TargetSslProxy resource whose
            SslCertificate resource is to be set.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_ssl_proxies_set_ssl_certificates_request_resource: "TargetSslProxiesSetSslCertificatesRequest" = proto.Field(
        proto.MESSAGE,
        number=147940797,
        message="TargetSslProxiesSetSslCertificatesRequest",
    )
    target_ssl_proxy: str = proto.Field(
        proto.STRING,
        number=338795853,
    )


class SetSslPolicyTargetHttpsProxyRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.SetSslPolicy. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_policy_reference_resource (google.cloud.compute_v1.types.SslPolicyReference):
            The body resource for this request
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource whose
            SSL policy is to be set. The name must be 1-63
            characters long, and comply with RFC1035.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_policy_reference_resource: "SslPolicyReference" = proto.Field(
        proto.MESSAGE,
        number=235403836,
        message="SslPolicyReference",
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )


class SetSslPolicyTargetSslProxyRequest(proto.Message):
    r"""A request message for TargetSslProxies.SetSslPolicy. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        ssl_policy_reference_resource (google.cloud.compute_v1.types.SslPolicyReference):
            The body resource for this request
        target_ssl_proxy (str):
            Name of the TargetSslProxy resource whose SSL
            policy is to be set. The name must be 1-63
            characters long, and comply with RFC1035.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    ssl_policy_reference_resource: "SslPolicyReference" = proto.Field(
        proto.MESSAGE,
        number=235403836,
        message="SslPolicyReference",
    )
    target_ssl_proxy: str = proto.Field(
        proto.STRING,
        number=338795853,
    )


class SetTagsInstanceRequest(proto.Message):
    r"""A request message for Instances.SetTags. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        tags_resource (google.cloud.compute_v1.types.Tags):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    tags_resource: "Tags" = proto.Field(
        proto.MESSAGE,
        number=331435380,
        message="Tags",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetTargetForwardingRuleRequest(proto.Message):
    r"""A request message for ForwardingRules.SetTarget. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rule (str):
            Name of the ForwardingRule resource in which
            target is to be set.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_reference_resource (google.cloud.compute_v1.types.TargetReference):
            The body resource for this request
    """

    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_reference_resource: "TargetReference" = proto.Field(
        proto.MESSAGE,
        number=523721712,
        message="TargetReference",
    )


class SetTargetGlobalForwardingRuleRequest(proto.Message):
    r"""A request message for GlobalForwardingRules.SetTarget. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        forwarding_rule (str):
            Name of the ForwardingRule resource in which
            target is to be set.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_reference_resource (google.cloud.compute_v1.types.TargetReference):
            The body resource for this request
    """

    forwarding_rule: str = proto.Field(
        proto.STRING,
        number=269964030,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_reference_resource: "TargetReference" = proto.Field(
        proto.MESSAGE,
        number=523721712,
        message="TargetReference",
    )


class SetTargetPoolsInstanceGroupManagerRequest(proto.Message):
    r"""A request message for InstanceGroupManagers.SetTargetPools.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group.
        instance_group_managers_set_target_pools_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersSetTargetPoolsRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the managed
            instance group is located.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_set_target_pools_request_resource: "InstanceGroupManagersSetTargetPoolsRequest" = proto.Field(
        proto.MESSAGE,
        number=281150216,
        message="InstanceGroupManagersSetTargetPoolsRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SetTargetPoolsRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.SetTargetPools. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            Name of the managed instance group.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        region_instance_group_managers_set_target_pools_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersSetTargetPoolsRequest):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_managers_set_target_pools_request_resource: "RegionInstanceGroupManagersSetTargetPoolsRequest" = proto.Field(
        proto.MESSAGE,
        number=78734717,
        message="RegionInstanceGroupManagersSetTargetPoolsRequest",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class SetUrlMapRegionTargetHttpProxyRequest(proto.Message):
    r"""A request message for RegionTargetHttpProxies.SetUrlMap. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_http_proxy (str):
            Name of the TargetHttpProxy to set a URL map
            for.
        url_map_reference_resource (google.cloud.compute_v1.types.UrlMapReference):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_http_proxy: str = proto.Field(
        proto.STRING,
        number=206872421,
    )
    url_map_reference_resource: "UrlMapReference" = proto.Field(
        proto.MESSAGE,
        number=398701333,
        message="UrlMapReference",
    )


class SetUrlMapRegionTargetHttpsProxyRequest(proto.Message):
    r"""A request message for RegionTargetHttpsProxies.SetUrlMap. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxy (str):
            Name of the TargetHttpsProxy to set a URL map
            for.
        url_map_reference_resource (google.cloud.compute_v1.types.UrlMapReference):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )
    url_map_reference_resource: "UrlMapReference" = proto.Field(
        proto.MESSAGE,
        number=398701333,
        message="UrlMapReference",
    )


class SetUrlMapTargetHttpProxyRequest(proto.Message):
    r"""A request message for TargetHttpProxies.SetUrlMap. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_http_proxy (str):
            Name of the TargetHttpProxy to set a URL map
            for.
        url_map_reference_resource (google.cloud.compute_v1.types.UrlMapReference):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_http_proxy: str = proto.Field(
        proto.STRING,
        number=206872421,
    )
    url_map_reference_resource: "UrlMapReference" = proto.Field(
        proto.MESSAGE,
        number=398701333,
        message="UrlMapReference",
    )


class SetUrlMapTargetHttpsProxyRequest(proto.Message):
    r"""A request message for TargetHttpsProxies.SetUrlMap. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        target_https_proxy (str):
            Name of the TargetHttpsProxy resource whose
            URL map is to be set.
        url_map_reference_resource (google.cloud.compute_v1.types.UrlMapReference):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    target_https_proxy: str = proto.Field(
        proto.STRING,
        number=52336748,
    )
    url_map_reference_resource: "UrlMapReference" = proto.Field(
        proto.MESSAGE,
        number=398701333,
        message="UrlMapReference",
    )


class SetUsageExportBucketProjectRequest(proto.Message):
    r"""A request message for Projects.SetUsageExportBucket. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        usage_export_location_resource (google.cloud.compute_v1.types.UsageExportLocation):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    usage_export_location_resource: "UsageExportLocation" = proto.Field(
        proto.MESSAGE,
        number=20260459,
        message="UsageExportLocation",
    )


class ShareSettings(proto.Message):
    r"""The share setting for reservations and sole tenancy node
    groups.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project_map (MutableMapping[str, google.cloud.compute_v1.types.ShareSettingsProjectConfig]):
            A map of project id and project config. This is only valid
            when share_type's value is SPECIFIC_PROJECTS.
        share_type (str):
            Type of sharing for this shared-reservation
            Check the ShareType enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_share_type``.
    """

    class ShareType(proto.Enum):
        r"""Type of sharing for this shared-reservation

        Values:
            UNDEFINED_SHARE_TYPE (0):
                A value indicating that the enum field is not
                set.
            LOCAL (72607563):
                Default value.
            ORGANIZATION (274978099):
                Shared-reservation is open to entire
                Organization
            SHARE_TYPE_UNSPECIFIED (494771730):
                Default value. This value is unused.
            SPECIFIC_PROJECTS (347838695):
                Shared-reservation is open to specific
                projects
        """
        UNDEFINED_SHARE_TYPE = 0
        LOCAL = 72607563
        ORGANIZATION = 274978099
        SHARE_TYPE_UNSPECIFIED = 494771730
        SPECIFIC_PROJECTS = 347838695

    project_map: MutableMapping[str, "ShareSettingsProjectConfig"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=134212406,
        message="ShareSettingsProjectConfig",
    )
    share_type: str = proto.Field(
        proto.STRING,
        number=359533466,
        optional=True,
    )


class ShareSettingsProjectConfig(proto.Message):
    r"""Config for each project in the share settings.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project_id (str):
            The project ID, should be same as the key of
            this project config in the parent map.

            This field is a member of `oneof`_ ``_project_id``.
    """

    project_id: str = proto.Field(
        proto.STRING,
        number=177513473,
        optional=True,
    )


class ShieldedInstanceConfig(proto.Message):
    r"""A set of Shielded Instance options.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        enable_integrity_monitoring (bool):
            Defines whether the instance has integrity
            monitoring enabled. Enabled by default.

            This field is a member of `oneof`_ ``_enable_integrity_monitoring``.
        enable_secure_boot (bool):
            Defines whether the instance has Secure Boot
            enabled. Disabled by default.

            This field is a member of `oneof`_ ``_enable_secure_boot``.
        enable_vtpm (bool):
            Defines whether the instance has the vTPM
            enabled. Enabled by default.

            This field is a member of `oneof`_ ``_enable_vtpm``.
    """

    enable_integrity_monitoring: bool = proto.Field(
        proto.BOOL,
        number=409071030,
        optional=True,
    )
    enable_secure_boot: bool = proto.Field(
        proto.BOOL,
        number=123568638,
        optional=True,
    )
    enable_vtpm: bool = proto.Field(
        proto.BOOL,
        number=181858935,
        optional=True,
    )


class ShieldedInstanceIdentity(proto.Message):
    r"""A Shielded Instance Identity.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        encryption_key (google.cloud.compute_v1.types.ShieldedInstanceIdentityEntry):
            An Endorsement Key (EK) made by the RSA 2048
            algorithm issued to the Shielded Instance's
            vTPM.

            This field is a member of `oneof`_ ``_encryption_key``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#shieldedInstanceIdentity for shielded Instance
            identity entry.

            This field is a member of `oneof`_ ``_kind``.
        signing_key (google.cloud.compute_v1.types.ShieldedInstanceIdentityEntry):
            An Attestation Key (AK) made by the RSA 2048
            algorithm issued to the Shielded Instance's
            vTPM.

            This field is a member of `oneof`_ ``_signing_key``.
    """

    encryption_key: "ShieldedInstanceIdentityEntry" = proto.Field(
        proto.MESSAGE,
        number=488268707,
        optional=True,
        message="ShieldedInstanceIdentityEntry",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    signing_key: "ShieldedInstanceIdentityEntry" = proto.Field(
        proto.MESSAGE,
        number=320948261,
        optional=True,
        message="ShieldedInstanceIdentityEntry",
    )


class ShieldedInstanceIdentityEntry(proto.Message):
    r"""A Shielded Instance Identity Entry.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ek_cert (str):
            A PEM-encoded X.509 certificate. This field
            can be empty.

            This field is a member of `oneof`_ ``_ek_cert``.
        ek_pub (str):
            A PEM-encoded public key.

            This field is a member of `oneof`_ ``_ek_pub``.
    """

    ek_cert: str = proto.Field(
        proto.STRING,
        number=450178589,
        optional=True,
    )
    ek_pub: str = proto.Field(
        proto.STRING,
        number=308947940,
        optional=True,
    )


class ShieldedInstanceIntegrityPolicy(proto.Message):
    r"""The policy describes the baseline against which Instance boot
    integrity is measured.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        update_auto_learn_policy (bool):
            Updates the integrity policy baseline using
            the measurements from the VM instance's most
            recent boot.

            This field is a member of `oneof`_ ``_update_auto_learn_policy``.
    """

    update_auto_learn_policy: bool = proto.Field(
        proto.BOOL,
        number=245490215,
        optional=True,
    )


class SignedUrlKey(proto.Message):
    r"""Represents a customer-supplied Signing Key used by Cloud CDN
    Signed URLs


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        key_name (str):
            Name of the key. The name must be 1-63 characters long, and
            comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_key_name``.
        key_value (str):
            128-bit key value used for signing the URL.
            The key value must be a valid RFC 4648 Section 5
            base64url encoded string.

            This field is a member of `oneof`_ ``_key_value``.
    """

    key_name: str = proto.Field(
        proto.STRING,
        number=500938859,
        optional=True,
    )
    key_value: str = proto.Field(
        proto.STRING,
        number=504106897,
        optional=True,
    )


class SimulateMaintenanceEventInstanceRequest(proto.Message):
    r"""A request message for Instances.SimulateMaintenanceEvent. See
    the method description for details.

    Attributes:
        instance (str):
            Name of the instance scoping this request.
        project (str):
            Project ID for this request.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SimulateMaintenanceEventNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.SimulateMaintenanceEvent.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        node_group (str):
            Name of the NodeGroup resource whose nodes
            will go under maintenance simulation.
        node_groups_simulate_maintenance_event_request_resource (google.cloud.compute_v1.types.NodeGroupsSimulateMaintenanceEventRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    node_group: str = proto.Field(
        proto.STRING,
        number=469958146,
    )
    node_groups_simulate_maintenance_event_request_resource: "NodeGroupsSimulateMaintenanceEventRequest" = proto.Field(
        proto.MESSAGE,
        number=351468764,
        message="NodeGroupsSimulateMaintenanceEventRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class Snapshot(proto.Message):
    r"""Represents a Persistent Disk Snapshot resource. You can use
    snapshots to back up data on a regular interval. For more
    information, read Creating persistent disk snapshots.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        architecture (str):
            [Output Only] The architecture of the snapshot. Valid values
            are ARM64 or X86_64. Check the Architecture enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_architecture``.
        auto_created (bool):
            [Output Only] Set to true if snapshots are automatically
            created by applying resource policy on the target disk.

            This field is a member of `oneof`_ ``_auto_created``.
        chain_name (str):
            Creates the new snapshot in the snapshot
            chain labeled with the specified name. The chain
            name must be 1-63 characters long and comply
            with RFC1035. This is an uncommon option only
            for advanced service owners who needs to create
            separate snapshot chains, for example, for
            chargeback tracking. When you describe your
            snapshot resource, this field is visible only if
            it has a non-empty value.

            This field is a member of `oneof`_ ``_chain_name``.
        creation_size_bytes (int):
            [Output Only] Size in bytes of the snapshot at creation
            time.

            This field is a member of `oneof`_ ``_creation_size_bytes``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        disk_size_gb (int):
            [Output Only] Size of the source disk, specified in GB.

            This field is a member of `oneof`_ ``_disk_size_gb``.
        download_bytes (int):
            [Output Only] Number of bytes downloaded to restore a
            snapshot to a disk.

            This field is a member of `oneof`_ ``_download_bytes``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always compute#snapshot
            for Snapshot resources.

            This field is a member of `oneof`_ ``_kind``.
        label_fingerprint (str):
            A fingerprint for the labels being applied to
            this snapshot, which is essentially a hash of
            the labels set used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update labels. You must always provide an
            up-to-date fingerprint hash in order to update
            or change labels, otherwise the request will
            fail with error 412 conditionNotMet. To see the
            latest fingerprint, make a get() request to
            retrieve a snapshot.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            Labels to apply to this snapshot. These can
            be later modified by the setLabels method. Label
            values may be empty.
        license_codes (MutableSequence[int]):
            [Output Only] Integer license codes indicating which
            licenses are attached to this snapshot.
        licenses (MutableSequence[str]):
            [Output Only] A list of public visible licenses that apply
            to this snapshot. This can be because the original image had
            licenses attached (such as a Windows image).
        location_hint (str):
            An opaque location hint used to place the
            snapshot close to other resources. This field is
            for use by internal tools that use the public
            API.

            This field is a member of `oneof`_ ``_location_hint``.
        name (str):
            Name of the resource; provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        satisfies_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_satisfies_pzs``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        snapshot_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            Encrypts the snapshot using a
            customer-supplied encryption key. After you
            encrypt a snapshot using a customer-supplied
            key, you must provide the same key if you use
            the snapshot later. For example, you must
            provide the encryption key when you create a
            disk from the encrypted snapshot in a future
            request. Customer-supplied encryption keys do
            not protect access to metadata of the snapshot.
            If you do not provide an encryption key when
            creating the snapshot, then the snapshot will be
            encrypted using an automatically generated key
            and you do not need to provide a key to use the
            snapshot later.

            This field is a member of `oneof`_ ``_snapshot_encryption_key``.
        snapshot_type (str):
            Indicates the type of the snapshot.
            Check the SnapshotType enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_snapshot_type``.
        source_disk (str):
            The source disk used to create this snapshot.

            This field is a member of `oneof`_ ``_source_disk``.
        source_disk_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The customer-supplied encryption key of the
            source disk. Required if the source disk is
            protected by a customer-supplied encryption key.

            This field is a member of `oneof`_ ``_source_disk_encryption_key``.
        source_disk_id (str):
            [Output Only] The ID value of the disk used to create this
            snapshot. This value may be used to determine whether the
            snapshot was taken from the current or a previous instance
            of a given disk name.

            This field is a member of `oneof`_ ``_source_disk_id``.
        source_snapshot_schedule_policy (str):
            [Output Only] URL of the resource policy which created this
            scheduled snapshot.

            This field is a member of `oneof`_ ``_source_snapshot_schedule_policy``.
        source_snapshot_schedule_policy_id (str):
            [Output Only] ID of the resource policy which created this
            scheduled snapshot.

            This field is a member of `oneof`_ ``_source_snapshot_schedule_policy_id``.
        status (str):
            [Output Only] The status of the snapshot. This can be
            CREATING, DELETING, FAILED, READY, or UPLOADING. Check the
            Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        storage_bytes (int):
            [Output Only] A size of the storage used by the snapshot. As
            snapshots share storage, this number is expected to change
            with snapshot creation/deletion.

            This field is a member of `oneof`_ ``_storage_bytes``.
        storage_bytes_status (str):
            [Output Only] An indicator whether storageBytes is in a
            stable state or it is being adjusted as a result of shared
            storage reallocation. This status can either be UPDATING,
            meaning the size of the snapshot is being updated, or
            UP_TO_DATE, meaning the size of the snapshot is up-to-date.
            Check the StorageBytesStatus enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_storage_bytes_status``.
        storage_locations (MutableSequence[str]):
            Cloud Storage bucket storage location of the
            snapshot (regional or multi-regional).
    """

    class Architecture(proto.Enum):
        r"""[Output Only] The architecture of the snapshot. Valid values are
        ARM64 or X86_64.

        Values:
            UNDEFINED_ARCHITECTURE (0):
                A value indicating that the enum field is not
                set.
            ARCHITECTURE_UNSPECIFIED (394750507):
                Default value indicating Architecture is not
                set.
            ARM64 (62547450):
                Machines with architecture ARM64
            X86_64 (425300551):
                Machines with architecture X86_64
        """
        UNDEFINED_ARCHITECTURE = 0
        ARCHITECTURE_UNSPECIFIED = 394750507
        ARM64 = 62547450
        X86_64 = 425300551

    class SnapshotType(proto.Enum):
        r"""Indicates the type of the snapshot.

        Values:
            UNDEFINED_SNAPSHOT_TYPE (0):
                A value indicating that the enum field is not
                set.
            ARCHIVE (506752162):
                No description available.
            STANDARD (484642493):
                No description available.
        """
        UNDEFINED_SNAPSHOT_TYPE = 0
        ARCHIVE = 506752162
        STANDARD = 484642493

    class Status(proto.Enum):
        r"""[Output Only] The status of the snapshot. This can be CREATING,
        DELETING, FAILED, READY, or UPLOADING.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            CREATING (455564985):
                Snapshot creation is in progress.
            DELETING (528602024):
                Snapshot is currently being deleted.
            FAILED (455706685):
                Snapshot creation failed.
            READY (77848963):
                Snapshot has been created successfully.
            UPLOADING (267603489):
                Snapshot is being uploaded.
        """
        UNDEFINED_STATUS = 0
        CREATING = 455564985
        DELETING = 528602024
        FAILED = 455706685
        READY = 77848963
        UPLOADING = 267603489

    class StorageBytesStatus(proto.Enum):
        r"""[Output Only] An indicator whether storageBytes is in a stable state
        or it is being adjusted as a result of shared storage reallocation.
        This status can either be UPDATING, meaning the size of the snapshot
        is being updated, or UP_TO_DATE, meaning the size of the snapshot is
        up-to-date.

        Values:
            UNDEFINED_STORAGE_BYTES_STATUS (0):
                A value indicating that the enum field is not
                set.
            UPDATING (494614342):
                No description available.
            UP_TO_DATE (101306702):
                No description available.
        """
        UNDEFINED_STORAGE_BYTES_STATUS = 0
        UPDATING = 494614342
        UP_TO_DATE = 101306702

    architecture: str = proto.Field(
        proto.STRING,
        number=302803283,
        optional=True,
    )
    auto_created: bool = proto.Field(
        proto.BOOL,
        number=463922264,
        optional=True,
    )
    chain_name: str = proto.Field(
        proto.STRING,
        number=68644169,
        optional=True,
    )
    creation_size_bytes: int = proto.Field(
        proto.INT64,
        number=125400077,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    disk_size_gb: int = proto.Field(
        proto.INT64,
        number=316263735,
        optional=True,
    )
    download_bytes: int = proto.Field(
        proto.INT64,
        number=435054068,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    license_codes: MutableSequence[int] = proto.RepeatedField(
        proto.INT64,
        number=45482664,
    )
    licenses: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=337642578,
    )
    location_hint: str = proto.Field(
        proto.STRING,
        number=350519505,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    satisfies_pzs: bool = proto.Field(
        proto.BOOL,
        number=480964267,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    snapshot_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=43334526,
        optional=True,
        message="CustomerEncryptionKey",
    )
    snapshot_type: str = proto.Field(
        proto.STRING,
        number=124349653,
        optional=True,
    )
    source_disk: str = proto.Field(
        proto.STRING,
        number=451753793,
        optional=True,
    )
    source_disk_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=531501153,
        optional=True,
        message="CustomerEncryptionKey",
    )
    source_disk_id: str = proto.Field(
        proto.STRING,
        number=454190809,
        optional=True,
    )
    source_snapshot_schedule_policy: str = proto.Field(
        proto.STRING,
        number=235756291,
        optional=True,
    )
    source_snapshot_schedule_policy_id: str = proto.Field(
        proto.STRING,
        number=70489047,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    storage_bytes: int = proto.Field(
        proto.INT64,
        number=424631719,
        optional=True,
    )
    storage_bytes_status: str = proto.Field(
        proto.STRING,
        number=490739082,
        optional=True,
    )
    storage_locations: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=328005274,
    )


class SnapshotList(proto.Message):
    r"""Contains a list of Snapshot resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Snapshot]):
            A list of Snapshot resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Snapshot"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Snapshot",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SourceDiskEncryptionKey(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk_encryption_key (google.cloud.compute_v1.types.CustomerEncryptionKey):
            The customer-supplied encryption key of the
            source disk. Required if the source disk is
            protected by a customer-supplied encryption key.

            This field is a member of `oneof`_ ``_disk_encryption_key``.
        source_disk (str):
            URL of the disk attached to the source
            instance. This can be a full or valid partial
            URL. For example, the following are valid
            values: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /disks/disk -
            projects/project/zones/zone/disks/disk -
            zones/zone/disks/disk

            This field is a member of `oneof`_ ``_source_disk``.
    """

    disk_encryption_key: "CustomerEncryptionKey" = proto.Field(
        proto.MESSAGE,
        number=271660677,
        optional=True,
        message="CustomerEncryptionKey",
    )
    source_disk: str = proto.Field(
        proto.STRING,
        number=451753793,
        optional=True,
    )


class SourceInstanceParams(proto.Message):
    r"""A specification of the parameters to use when creating the
    instance template from a source instance.

    Attributes:
        disk_configs (MutableSequence[google.cloud.compute_v1.types.DiskInstantiationConfig]):
            Attached disks configuration. If not
            provided, defaults are applied: For boot disk
            and any other R/W disks, the source images for
            each disk will be used. For read-only disks,
            they will be attached in read-only mode. Local
            SSD disks will be created as blank volumes.
    """

    disk_configs: MutableSequence["DiskInstantiationConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=235580623,
        message="DiskInstantiationConfig",
    )


class SourceInstanceProperties(proto.Message):
    r"""DEPRECATED: Please use compute#instanceProperties instead.
    New properties will not be added to this field.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        can_ip_forward (bool):
            Enables instances created based on this
            machine image 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.

            This field is a member of `oneof`_ ``_can_ip_forward``.
        deletion_protection (bool):
            Whether the instance created from this
            machine image should be protected against
            deletion.

            This field is a member of `oneof`_ ``_deletion_protection``.
        description (str):
            An optional text description for the
            instances that are created from this machine
            image.

            This field is a member of `oneof`_ ``_description``.
        disks (MutableSequence[google.cloud.compute_v1.types.SavedAttachedDisk]):
            An array of disks that are associated with
            the instances that are created from this machine
            image.
        guest_accelerators (MutableSequence[google.cloud.compute_v1.types.AcceleratorConfig]):
            A list of guest accelerator cards' type and
            count to use for instances created from this
            machine image.
        key_revocation_action_type (str):
            KeyRevocationActionType of the instance.
            Supported options are "STOP" and "NONE". The
            default value is "NONE" if it is not specified.
            Check the KeyRevocationActionType enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_key_revocation_action_type``.
        labels (MutableMapping[str, str]):
            Labels to apply to instances that are created
            from this machine image.
        machine_type (str):
            The machine type to use for instances that
            are created from this machine image.

            This field is a member of `oneof`_ ``_machine_type``.
        metadata (google.cloud.compute_v1.types.Metadata):
            The metadata key/value pairs to assign to
            instances that are created from this machine
            image. These pairs can consist of custom
            metadata or predefined keys. See Project and
            instance metadata for more information.

            This field is a member of `oneof`_ ``_metadata``.
        min_cpu_platform (str):
            Minimum cpu/platform to be used by instances
            created from this machine image. 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.

            This field is a member of `oneof`_ ``_min_cpu_platform``.
        network_interfaces (MutableSequence[google.cloud.compute_v1.types.NetworkInterface]):
            An array of network access configurations for
            this interface.
        scheduling (google.cloud.compute_v1.types.Scheduling):
            Specifies the scheduling options for the
            instances that are created from this machine
            image.

            This field is a member of `oneof`_ ``_scheduling``.
        service_accounts (MutableSequence[google.cloud.compute_v1.types.ServiceAccount]):
            A list of service accounts with specified
            scopes. Access tokens for these service accounts
            are available to the instances that are created
            from this machine image. Use metadata queries to
            obtain the access tokens for these instances.
        tags (google.cloud.compute_v1.types.Tags):
            A list of tags to apply to the instances that
            are created from this machine image. 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.

            This field is a member of `oneof`_ ``_tags``.
    """

    class KeyRevocationActionType(proto.Enum):
        r"""KeyRevocationActionType of the instance. Supported options
        are "STOP" and "NONE". The default value is "NONE" if it is not
        specified.

        Values:
            UNDEFINED_KEY_REVOCATION_ACTION_TYPE (0):
                A value indicating that the enum field is not
                set.
            KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED (467110106):
                Default value. This value is unused.
            NONE (2402104):
                Indicates user chose no operation.
            STOP (2555906):
                Indicates user chose to opt for VM shutdown
                on key revocation.
        """
        UNDEFINED_KEY_REVOCATION_ACTION_TYPE = 0
        KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED = 467110106
        NONE = 2402104
        STOP = 2555906

    can_ip_forward: bool = proto.Field(
        proto.BOOL,
        number=467731324,
        optional=True,
    )
    deletion_protection: bool = proto.Field(
        proto.BOOL,
        number=458014698,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    disks: MutableSequence["SavedAttachedDisk"] = proto.RepeatedField(
        proto.MESSAGE,
        number=95594102,
        message="SavedAttachedDisk",
    )
    guest_accelerators: MutableSequence["AcceleratorConfig"] = proto.RepeatedField(
        proto.MESSAGE,
        number=463595119,
        message="AcceleratorConfig",
    )
    key_revocation_action_type: str = proto.Field(
        proto.STRING,
        number=235941474,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    machine_type: str = proto.Field(
        proto.STRING,
        number=227711026,
        optional=True,
    )
    metadata: "Metadata" = proto.Field(
        proto.MESSAGE,
        number=86866735,
        optional=True,
        message="Metadata",
    )
    min_cpu_platform: str = proto.Field(
        proto.STRING,
        number=242912759,
        optional=True,
    )
    network_interfaces: MutableSequence["NetworkInterface"] = proto.RepeatedField(
        proto.MESSAGE,
        number=52735243,
        message="NetworkInterface",
    )
    scheduling: "Scheduling" = proto.Field(
        proto.MESSAGE,
        number=386688404,
        optional=True,
        message="Scheduling",
    )
    service_accounts: MutableSequence["ServiceAccount"] = proto.RepeatedField(
        proto.MESSAGE,
        number=277537328,
        message="ServiceAccount",
    )
    tags: "Tags" = proto.Field(
        proto.MESSAGE,
        number=3552281,
        optional=True,
        message="Tags",
    )


class SslCertificate(proto.Message):
    r"""Represents an SSL Certificate resource. Google Compute Engine has
    two SSL Certificate resources: \*
    `Global </compute/docs/reference/rest/v1/sslCertificates>`__ \*
    `Regional </compute/docs/reference/rest/v1/regionSslCertificates>`__
    The sslCertificates are used by: - external HTTPS load balancers -
    SSL proxy load balancers The regionSslCertificates are used by
    internal HTTPS load balancers. Optionally, certificate file contents
    that you upload can contain a set of up to five PEM-encoded
    certificates. The API call creates an object (sslCertificate) that
    holds this data. You can use SSL keys and certificates to secure
    connections to a load balancer. For more information, read Creating
    and using SSL certificates, SSL certificates quotas and limits, and
    Troubleshooting SSL certificates.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        certificate (str):
            A value read into memory from a certificate
            file. The certificate file must be in PEM
            format. The certificate chain must be no greater
            than 5 certs long. The chain must include at
            least one intermediate cert.

            This field is a member of `oneof`_ ``_certificate``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        expire_time (str):
            [Output Only] Expire time of the certificate. RFC3339

            This field is a member of `oneof`_ ``_expire_time``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#sslCertificate for SSL certificates.

            This field is a member of `oneof`_ ``_kind``.
        managed (google.cloud.compute_v1.types.SslCertificateManagedSslCertificate):
            Configuration and status of a managed SSL
            certificate.

            This field is a member of `oneof`_ ``_managed``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        private_key (str):
            A value read into memory from a write-only
            private key file. The private key file must be
            in PEM format. For security, only insert
            requests include this field.

            This field is a member of `oneof`_ ``_private_key``.
        region (str):
            [Output Only] URL of the region where the regional SSL
            Certificate resides. This field is not applicable to global
            SSL Certificate.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        self_managed (google.cloud.compute_v1.types.SslCertificateSelfManagedSslCertificate):
            Configuration and status of a self-managed
            SSL certificate.

            This field is a member of `oneof`_ ``_self_managed``.
        subject_alternative_names (MutableSequence[str]):
            [Output Only] Domains associated with the certificate via
            Subject Alternative Name.
        type_ (str):
            (Optional) Specifies the type of SSL certificate, either
            "SELF_MANAGED" or "MANAGED". If not specified, the
            certificate is self-managed and the fields certificate and
            private_key are used. Check the Type enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""(Optional) Specifies the type of SSL certificate, either
        "SELF_MANAGED" or "MANAGED". If not specified, the certificate is
        self-managed and the fields certificate and private_key are used.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            MANAGED (479501183):
                Google-managed SSLCertificate.
            SELF_MANAGED (434437516):
                Certificate uploaded by user.
            TYPE_UNSPECIFIED (437714322):
                No description available.
        """
        UNDEFINED_TYPE = 0
        MANAGED = 479501183
        SELF_MANAGED = 434437516
        TYPE_UNSPECIFIED = 437714322

    certificate: str = proto.Field(
        proto.STRING,
        number=341787031,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    expire_time: str = proto.Field(
        proto.STRING,
        number=440691181,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    managed: "SslCertificateManagedSslCertificate" = proto.Field(
        proto.MESSAGE,
        number=298389407,
        optional=True,
        message="SslCertificateManagedSslCertificate",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    private_key: str = proto.Field(
        proto.STRING,
        number=361331107,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    self_managed: "SslCertificateSelfManagedSslCertificate" = proto.Field(
        proto.MESSAGE,
        number=329284012,
        optional=True,
        message="SslCertificateSelfManagedSslCertificate",
    )
    subject_alternative_names: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=528807907,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class SslCertificateAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.SslCertificatesScopedList]):
            A list of SslCertificatesScopedList
            resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#sslCertificateAggregatedList for lists of SSL
            Certificates.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "SslCertificatesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="SslCertificatesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SslCertificateList(proto.Message):
    r"""Contains a list of SslCertificate resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.SslCertificate]):
            A list of SslCertificate resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["SslCertificate"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="SslCertificate",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SslCertificateManagedSslCertificate(proto.Message):
    r"""Configuration and status of a managed SSL certificate.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        domain_status (MutableMapping[str, str]):
            [Output only] Detailed statuses of the domains specified for
            managed certificate resource.
        domains (MutableSequence[str]):
            The domains for which a managed SSL certificate will be
            generated. Each Google-managed SSL certificate supports up
            to the `maximum number of domains per Google-managed SSL
            certificate </load-balancing/docs/quotas#ssl_certificates>`__.
        status (str):
            [Output only] Status of the managed certificate resource.
            Check the Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
    """

    class Status(proto.Enum):
        r"""[Output only] Status of the managed certificate resource.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                The certificate management is working, and a
                certificate has been provisioned.
            MANAGED_CERTIFICATE_STATUS_UNSPECIFIED (474800850):
                No description available.
            PROVISIONING (290896621):
                The certificate management is working. GCP
                will attempt to provision the first certificate.
            PROVISIONING_FAILED (76813775):
                Certificate provisioning failed due to an issue with the DNS
                or load balancing configuration. For details of which domain
                failed, consult domain_status field.
            PROVISIONING_FAILED_PERMANENTLY (275036203):
                Certificate provisioning failed due to an issue with the DNS
                or load balancing configuration. It won't be retried. To try
                again delete and create a new managed SslCertificate
                resource. For details of which domain failed, consult
                domain_status field.
            RENEWAL_FAILED (434659076):
                Renewal of the certificate has failed due to an issue with
                the DNS or load balancing configuration. The existing cert
                is still serving; however, it will expire shortly. To
                provision a renewed certificate, delete and create a new
                managed SslCertificate resource. For details on which domain
                failed, consult domain_status field.
        """
        UNDEFINED_STATUS = 0
        ACTIVE = 314733318
        MANAGED_CERTIFICATE_STATUS_UNSPECIFIED = 474800850
        PROVISIONING = 290896621
        PROVISIONING_FAILED = 76813775
        PROVISIONING_FAILED_PERMANENTLY = 275036203
        RENEWAL_FAILED = 434659076

    domain_status: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=360305613,
    )
    domains: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=226935855,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )


class SslCertificateSelfManagedSslCertificate(proto.Message):
    r"""Configuration and status of a self-managed SSL certificate.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        certificate (str):
            A local certificate file. The certificate
            must be in PEM format. The certificate chain
            must be no greater than 5 certs long. The chain
            must include at least one intermediate cert.

            This field is a member of `oneof`_ ``_certificate``.
        private_key (str):
            A write-only private key in PEM format. Only
            insert requests will include this field.

            This field is a member of `oneof`_ ``_private_key``.
    """

    certificate: str = proto.Field(
        proto.STRING,
        number=341787031,
        optional=True,
    )
    private_key: str = proto.Field(
        proto.STRING,
        number=361331107,
        optional=True,
    )


class SslCertificatesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ssl_certificates (MutableSequence[google.cloud.compute_v1.types.SslCertificate]):
            List of SslCertificates contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of backend services when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    ssl_certificates: MutableSequence["SslCertificate"] = proto.RepeatedField(
        proto.MESSAGE,
        number=366006543,
        message="SslCertificate",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SslPoliciesAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        etag (str):

            This field is a member of `oneof`_ ``_etag``.
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.SslPoliciesScopedList]):
            A list of SslPoliciesScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#sslPolicyAggregatedList for lists of SSL Policies.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "SslPoliciesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="SslPoliciesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SslPoliciesList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.SslPolicy]):
            A list of SslPolicy resources.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#sslPoliciesList for lists of sslPolicies.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["SslPolicy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="SslPolicy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SslPoliciesListAvailableFeaturesResponse(proto.Message):
    r"""

    Attributes:
        features (MutableSequence[str]):

    """

    features: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=246211645,
    )


class SslPoliciesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ssl_policies (MutableSequence[google.cloud.compute_v1.types.SslPolicy]):
            A list of SslPolicies contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of SSL policies when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    ssl_policies: MutableSequence["SslPolicy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=209941027,
        message="SslPolicy",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SslPolicy(proto.Message):
    r"""Represents an SSL Policy resource. Use SSL policies to
    control the SSL features, such as versions and cipher suites,
    offered by an HTTPS or SSL Proxy load balancer. For more
    information, read SSL Policy Concepts.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        custom_features (MutableSequence[str]):
            A list of features enabled when the selected
            profile is CUSTOM. The method returns the set of
            features that can be specified in this list.
            This field must be empty if the profile is not
            CUSTOM.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        enabled_features (MutableSequence[str]):
            [Output Only] The list of features enabled in the SSL
            policy.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a SslPolicy. An
            up-to-date fingerprint must be provided in order
            to update the SslPolicy, otherwise the request
            will fail with error 412 conditionNotMet. To see
            the latest fingerprint, make a get() request to
            retrieve an SslPolicy.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output only] Type of the resource. Always
            compute#sslPolicyfor SSL policies.

            This field is a member of `oneof`_ ``_kind``.
        min_tls_version (str):
            The minimum version of SSL protocol that can be used by the
            clients to establish a connection with the load balancer.
            This can be one of TLS_1_0, TLS_1_1, TLS_1_2. Check the
            MinTlsVersion enum for the list of possible values.

            This field is a member of `oneof`_ ``_min_tls_version``.
        name (str):
            Name of the resource. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        profile (str):
            Profile specifies the set of SSL features
            that can be used by the load balancer when
            negotiating SSL with clients. This can be one of
            COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If
            using CUSTOM, the set of SSL features to enable
            must be specified in the customFeatures field.
            Check the Profile enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_profile``.
        region (str):
            [Output Only] URL of the region where the regional SSL
            policy resides. This field is not applicable to global SSL
            policies.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        warnings (MutableSequence[google.cloud.compute_v1.types.Warnings]):
            [Output Only] If potential misconfigurations are detected
            for this SSL policy, this field will be populated with
            warning messages.
    """

    class MinTlsVersion(proto.Enum):
        r"""The minimum version of SSL protocol that can be used by the clients
        to establish a connection with the load balancer. This can be one of
        TLS_1_0, TLS_1_1, TLS_1_2.

        Values:
            UNDEFINED_MIN_TLS_VERSION (0):
                A value indicating that the enum field is not
                set.
            TLS_1_0 (33116734):
                TLS 1.0
            TLS_1_1 (33116735):
                TLS 1.1
            TLS_1_2 (33116736):
                TLS 1.2
        """
        UNDEFINED_MIN_TLS_VERSION = 0
        TLS_1_0 = 33116734
        TLS_1_1 = 33116735
        TLS_1_2 = 33116736

    class Profile(proto.Enum):
        r"""Profile specifies the set of SSL features that can be used by
        the load balancer when negotiating SSL with clients. This can be
        one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using
        CUSTOM, the set of SSL features to enable must be specified in
        the customFeatures field.

        Values:
            UNDEFINED_PROFILE (0):
                A value indicating that the enum field is not
                set.
            COMPATIBLE (179357396):
                Compatible profile. Allows the broadset set
                of clients, even those which support only
                out-of-date SSL features to negotiate with the
                load balancer.
            CUSTOM (388595569):
                Custom profile. Allow only the set of allowed
                SSL features specified in the customFeatures
                field.
            MODERN (132013855):
                Modern profile. Supports a wide set of SSL
                features, allowing modern clients to negotiate
                SSL with the load balancer.
            RESTRICTED (261551195):
                Restricted profile. Supports a reduced set of
                SSL features, intended to meet stricter
                compliance requirements.
        """
        UNDEFINED_PROFILE = 0
        COMPATIBLE = 179357396
        CUSTOM = 388595569
        MODERN = 132013855
        RESTRICTED = 261551195

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    custom_features: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=34789707,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    enabled_features: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=469017467,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    min_tls_version: str = proto.Field(
        proto.STRING,
        number=8155943,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    profile: str = proto.Field(
        proto.STRING,
        number=227445161,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warnings: MutableSequence["Warnings"] = proto.RepeatedField(
        proto.MESSAGE,
        number=498091095,
        message="Warnings",
    )


class SslPolicyReference(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ssl_policy (str):
            URL of the SSL policy resource. Set this to
            empty string to clear any existing SSL policy
            associated with the target proxy resource.

            This field is a member of `oneof`_ ``_ssl_policy``.
    """

    ssl_policy: str = proto.Field(
        proto.STRING,
        number=295190213,
        optional=True,
    )


class StartInstanceRequest(proto.Message):
    r"""A request message for Instances.Start. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance resource to start.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class StartWithEncryptionKeyInstanceRequest(proto.Message):
    r"""A request message for Instances.StartWithEncryptionKey. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance resource to start.
        instances_start_with_encryption_key_request_resource (google.cloud.compute_v1.types.InstancesStartWithEncryptionKeyRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instances_start_with_encryption_key_request_resource: "InstancesStartWithEncryptionKeyRequest" = proto.Field(
        proto.MESSAGE,
        number=441712511,
        message="InstancesStartWithEncryptionKeyRequest",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class StatefulPolicy(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        preserved_state (google.cloud.compute_v1.types.StatefulPolicyPreservedState):

            This field is a member of `oneof`_ ``_preserved_state``.
    """

    preserved_state: "StatefulPolicyPreservedState" = proto.Field(
        proto.MESSAGE,
        number=2634026,
        optional=True,
        message="StatefulPolicyPreservedState",
    )


class StatefulPolicyPreservedState(proto.Message):
    r"""Configuration of preserved resources.

    Attributes:
        disks (MutableMapping[str, google.cloud.compute_v1.types.StatefulPolicyPreservedStateDiskDevice]):
            Disks created on the instances that will be
            preserved on instance delete, update, etc. This
            map is keyed with the device names of the disks.
    """

    disks: MutableMapping[
        str, "StatefulPolicyPreservedStateDiskDevice"
    ] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=95594102,
        message="StatefulPolicyPreservedStateDiskDevice",
    )


class StatefulPolicyPreservedStateDiskDevice(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        auto_delete (str):
            These stateful disks will never be deleted during
            autohealing, update or VM instance recreate operations. This
            flag is used to configure if the disk should be deleted
            after it is no longer used by the group, e.g. when the given
            instance or the whole group is deleted. Note: disks attached
            in READ_ONLY mode cannot be auto-deleted. Check the
            AutoDelete enum for the list of possible values.

            This field is a member of `oneof`_ ``_auto_delete``.
    """

    class AutoDelete(proto.Enum):
        r"""These stateful disks will never be deleted during autohealing,
        update or VM instance recreate operations. This flag is used to
        configure if the disk should be deleted after it is no longer used
        by the group, e.g. when the given instance or the whole group is
        deleted. Note: disks attached in READ_ONLY mode cannot be
        auto-deleted.

        Values:
            UNDEFINED_AUTO_DELETE (0):
                A value indicating that the enum field is not
                set.
            NEVER (74175084):
                No description available.
            ON_PERMANENT_INSTANCE_DELETION (95727719):
                No description available.
        """
        UNDEFINED_AUTO_DELETE = 0
        NEVER = 74175084
        ON_PERMANENT_INSTANCE_DELETION = 95727719

    auto_delete: str = proto.Field(
        proto.STRING,
        number=464761403,
        optional=True,
    )


class StopInstanceRequest(proto.Message):
    r"""A request message for Instances.Stop. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        discard_local_ssd (bool):
            If true, discard the contents of any attached
            localSSD partitions. Default value is false.

            This field is a member of `oneof`_ ``_discard_local_ssd``.
        instance (str):
            Name of the instance resource to stop.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    discard_local_ssd: bool = proto.Field(
        proto.BOOL,
        number=319517903,
        optional=True,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class Subnetwork(proto.Message):
    r"""Represents a Subnetwork resource. A subnetwork (also known as
    a subnet) is a logical partition of a Virtual Private Cloud
    network with one primary IP range and zero or more secondary IP
    ranges. For more information, read Virtual Private Cloud (VPC)
    Network.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource. This field can be set only at resource
            creation time.

            This field is a member of `oneof`_ ``_description``.
        enable_flow_logs (bool):
            Whether to enable flow logging for this subnetwork. If this
            field is not explicitly set, it will not appear in get
            listings. If not set the default behavior is determined by
            the org policy, if there is no org policy specified, then it
            will default to disabled. This field isn't supported with
            the purpose field set to INTERNAL_HTTPS_LOAD_BALANCER.

            This field is a member of `oneof`_ ``_enable_flow_logs``.
        external_ipv6_prefix (str):
            The external IPv6 address range that is owned
            by this subnetwork.

            This field is a member of `oneof`_ ``_external_ipv6_prefix``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a Subnetwork. An
            up-to-date fingerprint must be provided in order
            to update the Subnetwork, otherwise the request
            will fail with error 412 conditionNotMet. To see
            the latest fingerprint, make a get() request to
            retrieve a Subnetwork.

            This field is a member of `oneof`_ ``_fingerprint``.
        gateway_address (str):
            [Output Only] The gateway address for default routes to
            reach destination addresses outside this subnetwork.

            This field is a member of `oneof`_ ``_gateway_address``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        internal_ipv6_prefix (str):
            [Output Only] The internal IPv6 address range that is
            assigned to this subnetwork.

            This field is a member of `oneof`_ ``_internal_ipv6_prefix``.
        ip_cidr_range (str):
            The range of internal addresses that are
            owned by this subnetwork. Provide this property
            when you create the subnetwork. For example,
            10.0.0.0/8 or 100.64.0.0/10. Ranges must be
            unique and non-overlapping within a network.
            Only IPv4 is supported. This field is set at
            resource creation time. The range can be any
            range listed in the Valid ranges list. The range
            can be expanded after creation using
            expandIpCidrRange.

            This field is a member of `oneof`_ ``_ip_cidr_range``.
        ipv6_access_type (str):
            The access type of IPv6 address this subnet holds. It's
            immutable and can only be specified during creation or the
            first time the subnet is updated into IPV4_IPV6 dual stack.
            Check the Ipv6AccessType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_ipv6_access_type``.
        ipv6_cidr_range (str):
            [Output Only] This field is for internal use.

            This field is a member of `oneof`_ ``_ipv6_cidr_range``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#subnetwork for Subnetwork resources.

            This field is a member of `oneof`_ ``_kind``.
        log_config (google.cloud.compute_v1.types.SubnetworkLogConfig):
            This field denotes the VPC flow logging
            options for this subnetwork. If logging is
            enabled, logs are exported to Cloud Logging.

            This field is a member of `oneof`_ ``_log_config``.
        name (str):
            The name of the resource, provided by the client when
            initially creating the resource. The name must be 1-63
            characters long, and comply with RFC1035. Specifically, the
            name must be 1-63 characters long and match the regular
            expression ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the
            first character must be a lowercase letter, and all
            following characters must be a dash, lowercase letter, or
            digit, except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            The URL of the network to which this
            subnetwork belongs, provided by the client when
            initially creating the subnetwork. This field
            can be set only at resource creation time.

            This field is a member of `oneof`_ ``_network``.
        private_ip_google_access (bool):
            Whether the VMs in this subnet can access
            Google services without assigned external IP
            addresses. This field can be both set at
            resource creation time and updated using
            setPrivateIpGoogleAccess.

            This field is a member of `oneof`_ ``_private_ip_google_access``.
        private_ipv6_google_access (str):
            This field is for internal use. This field
            can be both set at resource creation time and
            updated using patch. Check the
            PrivateIpv6GoogleAccess enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_private_ipv6_google_access``.
        purpose (str):
            The purpose of the resource. This field can be either
            PRIVATE_RFC_1918 or INTERNAL_HTTPS_LOAD_BALANCER. A
            subnetwork with purpose set to INTERNAL_HTTPS_LOAD_BALANCER
            is a user-created subnetwork that is reserved for Internal
            HTTP(S) Load Balancing. If unspecified, the purpose defaults
            to PRIVATE_RFC_1918. The enableFlowLogs field isn't
            supported with the purpose field set to
            INTERNAL_HTTPS_LOAD_BALANCER. Check the Purpose enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_purpose``.
        region (str):
            URL of the region where the Subnetwork
            resides. This field can be set only at resource
            creation time.

            This field is a member of `oneof`_ ``_region``.
        role (str):
            The role of subnetwork. Currently, this field is only used
            when purpose = INTERNAL_HTTPS_LOAD_BALANCER. The value can
            be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that
            is currently being used for Internal HTTP(S) Load Balancing.
            A BACKUP subnetwork is one that is ready to be promoted to
            ACTIVE or is currently draining. This field can be updated
            with a patch request. Check the Role enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_role``.
        secondary_ip_ranges (MutableSequence[google.cloud.compute_v1.types.SubnetworkSecondaryRange]):
            An array of configurations for secondary IP
            ranges for VM instances contained in this
            subnetwork. The primary IP of such VM must
            belong to the primary ipCidrRange of the
            subnetwork. The alias IPs may belong to either
            primary or secondary ranges. This field can be
            updated with a patch request.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        stack_type (str):
            The stack type for the subnet. If set to IPV4_ONLY, new VMs
            in the subnet are assigned IPv4 addresses only. If set to
            IPV4_IPV6, new VMs in the subnet can be assigned both IPv4
            and IPv6 addresses. If not specified, IPV4_ONLY is used.
            This field can be both set at resource creation time and
            updated using patch. Check the StackType enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_stack_type``.
        state (str):
            [Output Only] The state of the subnetwork, which can be one
            of the following values: READY: Subnetwork is created and
            ready to use DRAINING: only applicable to subnetworks that
            have the purpose set to INTERNAL_HTTPS_LOAD_BALANCER and
            indicates that connections to the load balancer are being
            drained. A subnetwork that is draining cannot be used or
            modified until it reaches a status of READY Check the State
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_state``.
    """

    class Ipv6AccessType(proto.Enum):
        r"""The access type of IPv6 address this subnet holds. It's immutable
        and can only be specified during creation or the first time the
        subnet is updated into IPV4_IPV6 dual stack.

        Values:
            UNDEFINED_IPV6_ACCESS_TYPE (0):
                A value indicating that the enum field is not
                set.
            EXTERNAL (35607499):
                VMs on this subnet will be assigned IPv6
                addresses that are accessible via the Internet,
                as well as the VPC network.
            INTERNAL (279295677):
                VMs on this subnet will be assigned IPv6
                addresses that are only accessible over the VPC
                network.
            UNSPECIFIED_IPV6_ACCESS_TYPE (313080613):
                No description available.
        """
        UNDEFINED_IPV6_ACCESS_TYPE = 0
        EXTERNAL = 35607499
        INTERNAL = 279295677
        UNSPECIFIED_IPV6_ACCESS_TYPE = 313080613

    class PrivateIpv6GoogleAccess(proto.Enum):
        r"""This field is for internal use. This field can be both set at
        resource creation time and updated using patch.

        Values:
            UNDEFINED_PRIVATE_IPV6_GOOGLE_ACCESS (0):
                A value indicating that the enum field is not
                set.
            DISABLE_GOOGLE_ACCESS (450958579):
                Disable private IPv6 access to/from Google
                services.
            ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE (427975994):
                Bidirectional private IPv6 access to/from
                Google services.
            ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE (288210263):
                Outbound private IPv6 access from VMs in this
                subnet to Google services.
        """
        UNDEFINED_PRIVATE_IPV6_GOOGLE_ACCESS = 0
        DISABLE_GOOGLE_ACCESS = 450958579
        ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE = 427975994
        ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE = 288210263

    class Purpose(proto.Enum):
        r"""The purpose of the resource. This field can be either
        PRIVATE_RFC_1918 or INTERNAL_HTTPS_LOAD_BALANCER. A subnetwork with
        purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a user-created
        subnetwork that is reserved for Internal HTTP(S) Load Balancing. If
        unspecified, the purpose defaults to PRIVATE_RFC_1918. The
        enableFlowLogs field isn't supported with the purpose field set to
        INTERNAL_HTTPS_LOAD_BALANCER.

        Values:
            UNDEFINED_PURPOSE (0):
                A value indicating that the enum field is not
                set.
            INTERNAL_HTTPS_LOAD_BALANCER (248748889):
                Subnet reserved for Internal HTTP(S) Load
                Balancing.
            PRIVATE (403485027):
                Regular user created or automatically created
                subnet.
            PRIVATE_RFC_1918 (254902107):
                Regular user created or automatically created
                subnet.
            PRIVATE_SERVICE_CONNECT (48134724):
                Subnetworks created for Private Service
                Connect in the producer network.
            REGIONAL_MANAGED_PROXY (153049966):
                Subnetwork used for Regional
                Internal/External HTTP(S) Load Balancing.
        """
        UNDEFINED_PURPOSE = 0
        INTERNAL_HTTPS_LOAD_BALANCER = 248748889
        PRIVATE = 403485027
        PRIVATE_RFC_1918 = 254902107
        PRIVATE_SERVICE_CONNECT = 48134724
        REGIONAL_MANAGED_PROXY = 153049966

    class Role(proto.Enum):
        r"""The role of subnetwork. Currently, this field is only used when
        purpose = INTERNAL_HTTPS_LOAD_BALANCER. The value can be set to
        ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently
        being used for Internal HTTP(S) Load Balancing. A BACKUP subnetwork
        is one that is ready to be promoted to ACTIVE or is currently
        draining. This field can be updated with a patch request.

        Values:
            UNDEFINED_ROLE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                The ACTIVE subnet that is currently used.
            BACKUP (341010882):
                The BACKUP subnet that could be promoted to
                ACTIVE.
        """
        UNDEFINED_ROLE = 0
        ACTIVE = 314733318
        BACKUP = 341010882

    class StackType(proto.Enum):
        r"""The stack type for the subnet. If set to IPV4_ONLY, new VMs in the
        subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new
        VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If
        not specified, IPV4_ONLY is used. This field can be both set at
        resource creation time and updated using patch.

        Values:
            UNDEFINED_STACK_TYPE (0):
                A value indicating that the enum field is not
                set.
            IPV4_IPV6 (22197249):
                New VMs in this subnet can have both IPv4 and
                IPv6 addresses.
            IPV4_ONLY (22373798):
                New VMs in this subnet will only be assigned
                IPv4 addresses.
            UNSPECIFIED_STACK_TYPE (298084569):
                No description available.
        """
        UNDEFINED_STACK_TYPE = 0
        IPV4_IPV6 = 22197249
        IPV4_ONLY = 22373798
        UNSPECIFIED_STACK_TYPE = 298084569

    class State(proto.Enum):
        r"""[Output Only] The state of the subnetwork, which can be one of the
        following values: READY: Subnetwork is created and ready to use
        DRAINING: only applicable to subnetworks that have the purpose set
        to INTERNAL_HTTPS_LOAD_BALANCER and indicates that connections to
        the load balancer are being drained. A subnetwork that is draining
        cannot be used or modified until it reaches a status of READY

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            DRAINING (480455402):
                Subnetwork is being drained.
            READY (77848963):
                Subnetwork is ready for use.
        """
        UNDEFINED_STATE = 0
        DRAINING = 480455402
        READY = 77848963

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    enable_flow_logs: bool = proto.Field(
        proto.BOOL,
        number=151544420,
        optional=True,
    )
    external_ipv6_prefix: str = proto.Field(
        proto.STRING,
        number=139299190,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    gateway_address: str = proto.Field(
        proto.STRING,
        number=459867385,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    internal_ipv6_prefix: str = proto.Field(
        proto.STRING,
        number=506270056,
        optional=True,
    )
    ip_cidr_range: str = proto.Field(
        proto.STRING,
        number=98117322,
        optional=True,
    )
    ipv6_access_type: str = proto.Field(
        proto.STRING,
        number=504658653,
        optional=True,
    )
    ipv6_cidr_range: str = proto.Field(
        proto.STRING,
        number=273141258,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    log_config: "SubnetworkLogConfig" = proto.Field(
        proto.MESSAGE,
        number=351299741,
        optional=True,
        message="SubnetworkLogConfig",
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    private_ip_google_access: bool = proto.Field(
        proto.BOOL,
        number=421491790,
        optional=True,
    )
    private_ipv6_google_access: str = proto.Field(
        proto.STRING,
        number=48277006,
        optional=True,
    )
    purpose: str = proto.Field(
        proto.STRING,
        number=316407070,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    role: str = proto.Field(
        proto.STRING,
        number=3506294,
        optional=True,
    )
    secondary_ip_ranges: MutableSequence[
        "SubnetworkSecondaryRange"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=136658915,
        message="SubnetworkSecondaryRange",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    stack_type: str = proto.Field(
        proto.STRING,
        number=425908881,
        optional=True,
    )
    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )


class SubnetworkAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.SubnetworksScopedList]):
            A list of SubnetworksScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#subnetworkAggregatedList for aggregated lists of
            subnetworks.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "SubnetworksScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="SubnetworksScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SubnetworkList(proto.Message):
    r"""Contains a list of Subnetwork resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Subnetwork]):
            A list of Subnetwork resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#subnetworkList for lists of subnetworks.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Subnetwork"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Subnetwork",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SubnetworkLogConfig(proto.Message):
    r"""The available logging options for this subnetwork.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        aggregation_interval (str):
            Can only be specified if VPC flow logging for
            this subnetwork is enabled. Toggles the
            aggregation interval for collecting flow logs.
            Increasing the interval time will reduce the
            amount of generated flow logs for long lasting
            connections. Default is an interval of 5 seconds
            per connection. Check the AggregationInterval
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_aggregation_interval``.
        enable (bool):
            Whether to enable flow logging for this
            subnetwork. If this field is not explicitly set,
            it will not appear in get listings. If not set
            the default behavior is determined by the org
            policy, if there is no org policy specified,
            then it will default to disabled.

            This field is a member of `oneof`_ ``_enable``.
        filter_expr (str):
            Can only be specified if VPC flow logs for
            this subnetwork is enabled. The filter
            expression is used to define which VPC flow logs
            should be exported to Cloud Logging.

            This field is a member of `oneof`_ ``_filter_expr``.
        flow_sampling (float):
            Can only be specified if VPC flow logging for this
            subnetwork is enabled. The value of the field must be in [0,
            1]. Set the sampling rate of VPC flow logs within the
            subnetwork where 1.0 means all collected logs are reported
            and 0.0 means no logs are reported. Default is 0.5 unless
            otherwise specified by the org policy, which means half of
            all collected logs are reported.

            This field is a member of `oneof`_ ``_flow_sampling``.
        metadata (str):
            Can only be specified if VPC flow logs for this subnetwork
            is enabled. Configures whether all, none or a subset of
            metadata fields should be added to the reported VPC flow
            logs. Default is EXCLUDE_ALL_METADATA. Check the Metadata
            enum for the list of possible values.

            This field is a member of `oneof`_ ``_metadata``.
        metadata_fields (MutableSequence[str]):
            Can only be specified if VPC flow logs for this subnetwork
            is enabled and "metadata" was set to CUSTOM_METADATA.
    """

    class AggregationInterval(proto.Enum):
        r"""Can only be specified if VPC flow logging for this subnetwork
        is enabled. Toggles the aggregation interval for collecting flow
        logs. Increasing the interval time will reduce the amount of
        generated flow logs for long lasting connections. Default is an
        interval of 5 seconds per connection.

        Values:
            UNDEFINED_AGGREGATION_INTERVAL (0):
                A value indicating that the enum field is not
                set.
            INTERVAL_10_MIN (487155916):
                No description available.
            INTERVAL_15_MIN (491773521):
                No description available.
            INTERVAL_1_MIN (69052714):
                No description available.
            INTERVAL_30_SEC (7548937):
                No description available.
            INTERVAL_5_MIN (72746798):
                No description available.
            INTERVAL_5_SEC (72752429):
                No description available.
        """
        UNDEFINED_AGGREGATION_INTERVAL = 0
        INTERVAL_10_MIN = 487155916
        INTERVAL_15_MIN = 491773521
        INTERVAL_1_MIN = 69052714
        INTERVAL_30_SEC = 7548937
        INTERVAL_5_MIN = 72746798
        INTERVAL_5_SEC = 72752429

    class Metadata(proto.Enum):
        r"""Can only be specified if VPC flow logs for this subnetwork is
        enabled. Configures whether all, none or a subset of metadata fields
        should be added to the reported VPC flow logs. Default is
        EXCLUDE_ALL_METADATA.

        Values:
            UNDEFINED_METADATA (0):
                A value indicating that the enum field is not
                set.
            CUSTOM_METADATA (62450749):
                No description available.
            EXCLUDE_ALL_METADATA (334519954):
                No description available.
            INCLUDE_ALL_METADATA (164619908):
                No description available.
        """
        UNDEFINED_METADATA = 0
        CUSTOM_METADATA = 62450749
        EXCLUDE_ALL_METADATA = 334519954
        INCLUDE_ALL_METADATA = 164619908

    aggregation_interval: str = proto.Field(
        proto.STRING,
        number=174919042,
        optional=True,
    )
    enable: bool = proto.Field(
        proto.BOOL,
        number=311764355,
        optional=True,
    )
    filter_expr: str = proto.Field(
        proto.STRING,
        number=183374428,
        optional=True,
    )
    flow_sampling: float = proto.Field(
        proto.FLOAT,
        number=530150360,
        optional=True,
    )
    metadata: str = proto.Field(
        proto.STRING,
        number=86866735,
        optional=True,
    )
    metadata_fields: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=378461641,
    )


class SubnetworkSecondaryRange(proto.Message):
    r"""Represents a secondary IP range of a subnetwork.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ip_cidr_range (str):
            The range of IP addresses belonging to this
            subnetwork secondary range. Provide this
            property when you create the subnetwork. Ranges
            must be unique and non-overlapping with all
            primary and secondary IP ranges within a
            network. Only IPv4 is supported. The range can
            be any range listed in the Valid ranges list.

            This field is a member of `oneof`_ ``_ip_cidr_range``.
        range_name (str):
            The name associated with this subnetwork
            secondary range, used when adding an alias IP
            range to a VM instance. The name must be 1-63
            characters long, and comply with RFC1035. The
            name must be unique within the subnetwork.

            This field is a member of `oneof`_ ``_range_name``.
    """

    ip_cidr_range: str = proto.Field(
        proto.STRING,
        number=98117322,
        optional=True,
    )
    range_name: str = proto.Field(
        proto.STRING,
        number=332216397,
        optional=True,
    )


class SubnetworksExpandIpCidrRangeRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ip_cidr_range (str):
            The IP (in CIDR format or netmask) of
            internal addresses that are legal on this
            Subnetwork. This range should be disjoint from
            other subnetworks within this network. This
            range can only be larger than (i.e. a superset
            of) the range previously defined before the
            update.

            This field is a member of `oneof`_ ``_ip_cidr_range``.
    """

    ip_cidr_range: str = proto.Field(
        proto.STRING,
        number=98117322,
        optional=True,
    )


class SubnetworksScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        subnetworks (MutableSequence[google.cloud.compute_v1.types.Subnetwork]):
            A list of subnetworks contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            An informational warning that appears when
            the list of addresses is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    subnetworks: MutableSequence["Subnetwork"] = proto.RepeatedField(
        proto.MESSAGE,
        number=415853125,
        message="Subnetwork",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class SubnetworksSetPrivateIpGoogleAccessRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        private_ip_google_access (bool):

            This field is a member of `oneof`_ ``_private_ip_google_access``.
    """

    private_ip_google_access: bool = proto.Field(
        proto.BOOL,
        number=421491790,
        optional=True,
    )


class Subsetting(proto.Message):
    r"""Subsetting configuration for this BackendService. Currently
    this is applicable only for Internal TCP/UDP load balancing,
    Internal HTTP(S) load balancing and Traffic Director.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        policy (str):
            Check the Policy enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_policy``.
    """

    class Policy(proto.Enum):
        r"""

        Values:
            UNDEFINED_POLICY (0):
                A value indicating that the enum field is not
                set.
            CONSISTENT_HASH_SUBSETTING (108989492):
                Subsetting based on consistent hashing. For Traffic
                Director, the number of backends per backend group (the
                subset size) is based on the ``subset_size`` parameter. For
                Internal HTTP(S) load balancing, the number of backends per
                backend group (the subset size) is dynamically adjusted in
                two cases: - As the number of proxy instances participating
                in Internal HTTP(S) load balancing increases, the subset
                size decreases. - When the total number of backends in a
                network exceeds the capacity of a single proxy instance,
                subset sizes are reduced automatically for each service that
                has backend subsetting enabled.
            NONE (2402104):
                No Subsetting. Clients may open connections
                and send traffic to all backends of this backend
                service. This can lead to performance issues if
                there is substantial imbalance in the count of
                clients and backends.
        """
        UNDEFINED_POLICY = 0
        CONSISTENT_HASH_SUBSETTING = 108989492
        NONE = 2402104

    policy: str = proto.Field(
        proto.STRING,
        number=91071794,
        optional=True,
    )


class SuspendInstanceRequest(proto.Message):
    r"""A request message for Instances.Suspend. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        discard_local_ssd (bool):
            If true, discard the contents of any attached
            localSSD partitions. Default value is false.

            This field is a member of `oneof`_ ``_discard_local_ssd``.
        instance (str):
            Name of the instance resource to suspend.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    discard_local_ssd: bool = proto.Field(
        proto.BOOL,
        number=319517903,
        optional=True,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class SwitchToCustomModeNetworkRequest(proto.Message):
    r"""A request message for Networks.SwitchToCustomMode. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network (str):
            Name of the network to be updated.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class TCPHealthCheck(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        port (int):
            The TCP port number to which the health check
            prober sends packets. The default value is 80.
            Valid values are 1 through 65535.

            This field is a member of `oneof`_ ``_port``.
        port_name (str):
            Not supported.

            This field is a member of `oneof`_ ``_port_name``.
        port_specification (str):
            Specifies how a port is selected for health checking. Can be
            one of the following values: USE_FIXED_PORT: Specifies a
            port number explicitly using the port field in the health
            check. Supported by backend services for pass-through load
            balancers and backend services for proxy load balancers. Not
            supported by target pools. The health check supports all
            backends supported by the backend service provided the
            backend can be health checked. For example, GCE_VM_IP
            network endpoint groups, GCE_VM_IP_PORT network endpoint
            groups, and instance group backends. USE_NAMED_PORT: Not
            supported. USE_SERVING_PORT: Provides an indirect method of
            specifying the health check port by referring to the backend
            service. Only supported by backend services for proxy load
            balancers. Not supported by target pools. Not supported by
            backend services for pass-through load balancers. Supports
            all backends that can be health checked; for example,
            GCE_VM_IP_PORT network endpoint groups and instance group
            backends. For GCE_VM_IP_PORT network endpoint group
            backends, the health check uses the port number specified
            for each endpoint in the network endpoint group. For
            instance group backends, the health check uses the port
            number determined by looking up the backend service's named
            port in the instance group's list of named ports. Check the
            PortSpecification enum for the list of possible values.

            This field is a member of `oneof`_ ``_port_specification``.
        proxy_header (str):
            Specifies the type of proxy header to append before sending
            data to the backend, either NONE or PROXY_V1. The default is
            NONE. Check the ProxyHeader enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_proxy_header``.
        request (str):
            Instructs the health check prober to send
            this exact ASCII string, up to 1024 bytes in
            length, after establishing the TCP connection.

            This field is a member of `oneof`_ ``_request``.
        response (str):
            Creates a content-based TCP health check. In
            addition to establishing a TCP connection, you
            can configure the health check to pass only when
            the backend sends this exact response ASCII
            string, up to 1024 bytes in length. For details,
            see:
            https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp

            This field is a member of `oneof`_ ``_response``.
    """

    class PortSpecification(proto.Enum):
        r"""Specifies how a port is selected for health checking. Can be one of
        the following values: USE_FIXED_PORT: Specifies a port number
        explicitly using the port field in the health check. Supported by
        backend services for pass-through load balancers and backend
        services for proxy load balancers. Not supported by target pools.
        The health check supports all backends supported by the backend
        service provided the backend can be health checked. For example,
        GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint
        groups, and instance group backends. USE_NAMED_PORT: Not supported.
        USE_SERVING_PORT: Provides an indirect method of specifying the
        health check port by referring to the backend service. Only
        supported by backend services for proxy load balancers. Not
        supported by target pools. Not supported by backend services for
        pass-through load balancers. Supports all backends that can be
        health checked; for example, GCE_VM_IP_PORT network endpoint groups
        and instance group backends. For GCE_VM_IP_PORT network endpoint
        group backends, the health check uses the port number specified for
        each endpoint in the network endpoint group. For instance group
        backends, the health check uses the port number determined by
        looking up the backend service's named port in the instance group's
        list of named ports.

        Values:
            UNDEFINED_PORT_SPECIFICATION (0):
                A value indicating that the enum field is not
                set.
            USE_FIXED_PORT (190235748):
                The port number in the health check's port is
                used for health checking. Applies to network
                endpoint group and instance group backends.
            USE_NAMED_PORT (349300671):
                Not supported.
            USE_SERVING_PORT (362637516):
                For network endpoint group backends, the
                health check uses the port number specified on
                each endpoint in the network endpoint group. For
                instance group backends, the health check uses
                the port number specified for the backend
                service's named port defined in the instance
                group's named ports.
        """
        UNDEFINED_PORT_SPECIFICATION = 0
        USE_FIXED_PORT = 190235748
        USE_NAMED_PORT = 349300671
        USE_SERVING_PORT = 362637516

    class ProxyHeader(proto.Enum):
        r"""Specifies the type of proxy header to append before sending data to
        the backend, either NONE or PROXY_V1. The default is NONE.

        Values:
            UNDEFINED_PROXY_HEADER (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No description available.
            PROXY_V1 (334352940):
                No description available.
        """
        UNDEFINED_PROXY_HEADER = 0
        NONE = 2402104
        PROXY_V1 = 334352940

    port: int = proto.Field(
        proto.INT32,
        number=3446913,
        optional=True,
    )
    port_name: str = proto.Field(
        proto.STRING,
        number=41534345,
        optional=True,
    )
    port_specification: str = proto.Field(
        proto.STRING,
        number=51590597,
        optional=True,
    )
    proxy_header: str = proto.Field(
        proto.STRING,
        number=160374142,
        optional=True,
    )
    request: str = proto.Field(
        proto.STRING,
        number=21951119,
        optional=True,
    )
    response: str = proto.Field(
        proto.STRING,
        number=196547649,
        optional=True,
    )


class Tags(proto.Message):
    r"""A set of instance tags.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        fingerprint (str):
            Specifies a fingerprint for this request,
            which is essentially a hash of the tags'
            contents and used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update tags. You must always provide an
            up-to-date fingerprint hash in order to update
            or change tags. To see the latest fingerprint,
            make get() request to the instance.

            This field is a member of `oneof`_ ``_fingerprint``.
        items (MutableSequence[str]):
            An array of tags. Each tag must be 1-63
            characters long, and comply with RFC1035.
    """

    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    items: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=100526016,
    )


class TargetGrpcProxy(proto.Message):
    r"""Represents a Target gRPC Proxy resource. A target gRPC proxy is a
    component of load balancers intended for load balancing gRPC
    traffic. Only global forwarding rules with load balancing scheme
    INTERNAL_SELF_MANAGED can reference a target gRPC proxy. The target
    gRPC Proxy references a URL map that specifies how traffic is routed
    to gRPC backend services.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a TargetGrpcProxy. An
            up-to-date fingerprint must be provided in order
            to patch/update the TargetGrpcProxy; otherwise,
            the request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve the
            TargetGrpcProxy.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource type.
            The server generates this identifier.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#targetGrpcProxy for target grpc proxies.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        self_link_with_id (str):
            [Output Only] Server-defined URL with id for the resource.

            This field is a member of `oneof`_ ``_self_link_with_id``.
        url_map (str):
            URL to the UrlMap resource that defines the
            mapping from URL to the BackendService. The
            protocol field in the BackendService must be set
            to GRPC.

            This field is a member of `oneof`_ ``_url_map``.
        validate_for_proxyless (bool):
            If true, indicates that the BackendServices
            referenced by the urlMap may be accessed by gRPC
            applications without using a sidecar proxy. This
            will enable configuration checks on urlMap and
            its referenced BackendServices to not allow
            unsupported features. A gRPC application must
            use "xds:///" scheme in the target URI of the
            service it is connecting to. If false, indicates
            that the BackendServices referenced by the
            urlMap will be accessed by gRPC applications via
            a sidecar proxy. In this case, a gRPC
            application must not use "xds:///" scheme in the
            target URI of the service it is connecting to

            This field is a member of `oneof`_ ``_validate_for_proxyless``.
    """

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    self_link_with_id: str = proto.Field(
        proto.STRING,
        number=44520962,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
        optional=True,
    )
    validate_for_proxyless: bool = proto.Field(
        proto.BOOL,
        number=101822888,
        optional=True,
    )


class TargetGrpcProxyList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.TargetGrpcProxy]):
            A list of TargetGrpcProxy resources.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#targetGrpcProxy for target grpc proxies.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["TargetGrpcProxy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="TargetGrpcProxy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetHttpProxiesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target_http_proxies (MutableSequence[google.cloud.compute_v1.types.TargetHttpProxy]):
            A list of TargetHttpProxies contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of backend services when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    target_http_proxies: MutableSequence["TargetHttpProxy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=162147011,
        message="TargetHttpProxy",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetHttpProxy(proto.Message):
    r"""Represents a Target HTTP Proxy resource. Google Compute Engine has
    two Target HTTP Proxy resources: \*
    `Global </compute/docs/reference/rest/v1/targetHttpProxies>`__ \*
    `Regional </compute/docs/reference/rest/v1/regionTargetHttpProxies>`__
    A target HTTP proxy is a component of GCP HTTP load balancers. \*
    targetHttpProxies are used by external HTTP load balancers and
    Traffic Director. \* regionTargetHttpProxies are used by internal
    HTTP load balancers. Forwarding rules reference a target HTTP proxy,
    and the target proxy then references a URL map. For more
    information, read Using Target Proxies and Forwarding rule concepts.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a TargetHttpProxy. An
            up-to-date fingerprint must be provided in order
            to patch/update the TargetHttpProxy; otherwise,
            the request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve the
            TargetHttpProxy.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetHttpProxy for target HTTP proxies.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        proxy_bind (bool):
            This field only applies when the forwarding rule that
            references this target proxy has a loadBalancingScheme set
            to INTERNAL_SELF_MANAGED. When this field is set to true,
            Envoy proxies set up inbound traffic interception and bind
            to the IP address and port specified in the forwarding rule.
            This is generally useful when using Traffic Director to
            configure Envoy as a gateway or middle proxy (in other
            words, not a sidecar proxy). The Envoy proxy listens for
            inbound requests and handles requests when it receives them.
            The default is false.

            This field is a member of `oneof`_ ``_proxy_bind``.
        region (str):
            [Output Only] URL of the region where the regional Target
            HTTP Proxy resides. This field is not applicable to global
            Target HTTP Proxies.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        url_map (str):
            URL to the UrlMap resource that defines the
            mapping from URL to the BackendService.

            This field is a member of `oneof`_ ``_url_map``.
    """

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    proxy_bind: bool = proto.Field(
        proto.BOOL,
        number=286025582,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
        optional=True,
    )


class TargetHttpProxyAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.TargetHttpProxiesScopedList]):
            A list of TargetHttpProxiesScopedList
            resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetHttpProxyAggregatedList for lists of Target
            HTTP Proxies.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "TargetHttpProxiesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="TargetHttpProxiesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )


class TargetHttpProxyList(proto.Message):
    r"""A list of TargetHttpProxy resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.TargetHttpProxy]):
            A list of TargetHttpProxy resources.
        kind (str):
            Type of resource. Always
            compute#targetHttpProxyList for lists of target
            HTTP proxies.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["TargetHttpProxy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="TargetHttpProxy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetHttpsProxiesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target_https_proxies (MutableSequence[google.cloud.compute_v1.types.TargetHttpsProxy]):
            A list of TargetHttpsProxies contained in
            this scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of backend services when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    target_https_proxies: MutableSequence["TargetHttpsProxy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=366607882,
        message="TargetHttpsProxy",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetHttpsProxiesSetCertificateMapRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        certificate_map (str):
            URL of the Certificate Map to associate with
            this TargetHttpsProxy.

            This field is a member of `oneof`_ ``_certificate_map``.
    """

    certificate_map: str = proto.Field(
        proto.STRING,
        number=156463796,
        optional=True,
    )


class TargetHttpsProxiesSetQuicOverrideRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        quic_override (str):
            QUIC policy for the TargetHttpsProxy
            resource. Check the QuicOverride enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_quic_override``.
    """

    class QuicOverride(proto.Enum):
        r"""QUIC policy for the TargetHttpsProxy resource.

        Values:
            UNDEFINED_QUIC_OVERRIDE (0):
                A value indicating that the enum field is not
                set.
            DISABLE (241807048):
                The load balancer will not attempt to
                negotiate QUIC with clients.
            ENABLE (438835587):
                The load balancer will attempt to negotiate
                QUIC with clients.
            NONE (2402104):
                No overrides to the default QUIC policy. This
                option is implicit if no QUIC override has been
                specified in the request.
        """
        UNDEFINED_QUIC_OVERRIDE = 0
        DISABLE = 241807048
        ENABLE = 438835587
        NONE = 2402104

    quic_override: str = proto.Field(
        proto.STRING,
        number=456577197,
        optional=True,
    )


class TargetHttpsProxiesSetSslCertificatesRequest(proto.Message):
    r"""

    Attributes:
        ssl_certificates (MutableSequence[str]):
            New set of SslCertificate resources to
            associate with this TargetHttpsProxy resource.
            At least one SSL certificate must be specified.
            Currently, you may specify up to 15 SSL
            certificates.
    """

    ssl_certificates: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=366006543,
    )


class TargetHttpsProxy(proto.Message):
    r"""Represents a Target HTTPS Proxy resource. Google Compute Engine has
    two Target HTTPS Proxy resources: \*
    `Global </compute/docs/reference/rest/v1/targetHttpsProxies>`__ \*
    `Regional </compute/docs/reference/rest/v1/regionTargetHttpsProxies>`__
    A target HTTPS proxy is a component of GCP HTTPS load balancers. \*
    targetHttpsProxies are used by external HTTPS load balancers. \*
    regionTargetHttpsProxies are used by internal HTTPS load balancers.
    Forwarding rules reference a target HTTPS proxy, and the target
    proxy then references a URL map. For more information, read Using
    Target Proxies and Forwarding rule concepts.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        authorization_policy (str):
            Optional. A URL referring to a
            networksecurity.AuthorizationPolicy resource that describes
            how the proxy should authorize inbound traffic. If left
            blank, access will not be restricted by an authorization
            policy. Refer to the AuthorizationPolicy resource for
            additional details. authorizationPolicy only applies to a
            global TargetHttpsProxy attached to globalForwardingRules
            with the loadBalancingScheme set to INTERNAL_SELF_MANAGED.
            Note: This field currently has no impact.

            This field is a member of `oneof`_ ``_authorization_policy``.
        certificate_map (str):
            URL of a certificate map that identifies a
            certificate map associated with the given target
            proxy. This field can only be set for global
            target proxies. If set, sslCertificates will be
            ignored.

            This field is a member of `oneof`_ ``_certificate_map``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field will be
            ignored when inserting a TargetHttpsProxy. An
            up-to-date fingerprint must be provided in order
            to patch the TargetHttpsProxy; otherwise, the
            request will fail with error 412
            conditionNotMet. To see the latest fingerprint,
            make a get() request to retrieve the
            TargetHttpsProxy.

            This field is a member of `oneof`_ ``_fingerprint``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetHttpsProxy for target HTTPS proxies.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        proxy_bind (bool):
            This field only applies when the forwarding rule that
            references this target proxy has a loadBalancingScheme set
            to INTERNAL_SELF_MANAGED. When this field is set to true,
            Envoy proxies set up inbound traffic interception and bind
            to the IP address and port specified in the forwarding rule.
            This is generally useful when using Traffic Director to
            configure Envoy as a gateway or middle proxy (in other
            words, not a sidecar proxy). The Envoy proxy listens for
            inbound requests and handles requests when it receives them.
            The default is false.

            This field is a member of `oneof`_ ``_proxy_bind``.
        quic_override (str):
            Specifies the QUIC override policy for this
            TargetHttpsProxy resource. This setting
            determines whether the load balancer attempts to
            negotiate QUIC with clients. You can specify
            NONE, ENABLE, or DISABLE. - When quic-override
            is set to NONE, Google manages whether QUIC is
            used. - When quic-override is set to ENABLE, the
            load balancer uses QUIC when possible. - When
            quic-override is set to DISABLE, the load
            balancer doesn't use QUIC. - If the
            quic-override flag is not specified, NONE is
            implied. Check the QuicOverride enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_quic_override``.
        region (str):
            [Output Only] URL of the region where the regional
            TargetHttpsProxy resides. This field is not applicable to
            global TargetHttpsProxies.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        server_tls_policy (str):
            Optional. A URL referring to a
            networksecurity.ServerTlsPolicy resource that describes how
            the proxy should authenticate inbound traffic.
            serverTlsPolicy only applies to a global TargetHttpsProxy
            attached to globalForwardingRules with the
            loadBalancingScheme set to INTERNAL_SELF_MANAGED. If left
            blank, communications are not encrypted. Note: This field
            currently has no impact.

            This field is a member of `oneof`_ ``_server_tls_policy``.
        ssl_certificates (MutableSequence[str]):
            URLs to SslCertificate resources that are used to
            authenticate connections between users and the load
            balancer. At least one SSL certificate must be specified.
            Currently, you may specify up to 15 SSL certificates.
            sslCertificates do not apply when the load balancing scheme
            is set to INTERNAL_SELF_MANAGED.
        ssl_policy (str):
            URL of SslPolicy resource that will be
            associated with the TargetHttpsProxy resource.
            If not set, the TargetHttpsProxy resource has no
            SSL policy configured.

            This field is a member of `oneof`_ ``_ssl_policy``.
        url_map (str):
            A fully-qualified or valid partial URL to the
            UrlMap resource that defines the mapping from
            URL to the BackendService. For example, the
            following are all valid URLs for specifying a
            URL map: -
            https://www.googleapis.compute/v1/projects/project/global/urlMaps/
            url-map -
            projects/project/global/urlMaps/url-map -
            global/urlMaps/url-map

            This field is a member of `oneof`_ ``_url_map``.
    """

    class QuicOverride(proto.Enum):
        r"""Specifies the QUIC override policy for this TargetHttpsProxy
        resource. This setting determines whether the load balancer
        attempts to negotiate QUIC with clients. You can specify NONE,
        ENABLE, or DISABLE. - When quic-override is set to NONE, Google
        manages whether QUIC is used. - When quic-override is set to
        ENABLE, the load balancer uses QUIC when possible. - When
        quic-override is set to DISABLE, the load balancer doesn't use
        QUIC. - If the quic-override flag is not specified, NONE is
        implied.

        Values:
            UNDEFINED_QUIC_OVERRIDE (0):
                A value indicating that the enum field is not
                set.
            DISABLE (241807048):
                The load balancer will not attempt to
                negotiate QUIC with clients.
            ENABLE (438835587):
                The load balancer will attempt to negotiate
                QUIC with clients.
            NONE (2402104):
                No overrides to the default QUIC policy. This
                option is implicit if no QUIC override has been
                specified in the request.
        """
        UNDEFINED_QUIC_OVERRIDE = 0
        DISABLE = 241807048
        ENABLE = 438835587
        NONE = 2402104

    authorization_policy: str = proto.Field(
        proto.STRING,
        number=33945528,
        optional=True,
    )
    certificate_map: str = proto.Field(
        proto.STRING,
        number=156463796,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    proxy_bind: bool = proto.Field(
        proto.BOOL,
        number=286025582,
        optional=True,
    )
    quic_override: str = proto.Field(
        proto.STRING,
        number=456577197,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    server_tls_policy: str = proto.Field(
        proto.STRING,
        number=295825266,
        optional=True,
    )
    ssl_certificates: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=366006543,
    )
    ssl_policy: str = proto.Field(
        proto.STRING,
        number=295190213,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
        optional=True,
    )


class TargetHttpsProxyAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.TargetHttpsProxiesScopedList]):
            A list of TargetHttpsProxiesScopedList
            resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetHttpsProxyAggregatedList for lists of Target
            HTTP Proxies.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "TargetHttpsProxiesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="TargetHttpsProxiesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetHttpsProxyList(proto.Message):
    r"""Contains a list of TargetHttpsProxy resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.TargetHttpsProxy]):
            A list of TargetHttpsProxy resources.
        kind (str):
            Type of resource. Always
            compute#targetHttpsProxyList for lists of target
            HTTPS proxies.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["TargetHttpsProxy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="TargetHttpsProxy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetInstance(proto.Message):
    r"""Represents a Target Instance resource. You can use a target
    instance to handle traffic for one or more forwarding rules,
    which is ideal for forwarding protocol traffic that is managed
    by a single source. For example, ESP, AH, TCP, or UDP. For more
    information, read Target instances.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        instance (str):
            A URL to the virtual machine instance that
            handles traffic for this target instance. When
            creating a target instance, you can provide the
            fully-qualified URL or a valid partial URL to
            the desired virtual machine. For example, the
            following are all valid URLs: -
            https://www.googleapis.com/compute/v1/projects/project/zones/zone
            /instances/instance -
            projects/project/zones/zone/instances/instance -
            zones/zone/instances/instance

            This field is a member of `oneof`_ ``_instance``.
        kind (str):
            [Output Only] The type of the resource. Always
            compute#targetInstance for target instances.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        nat_policy (str):
            Must have a value of NO_NAT. Protocol forwarding delivers
            packets while preserving the destination IP address of the
            forwarding rule referencing the target instance. Check the
            NatPolicy enum for the list of possible values.

            This field is a member of `oneof`_ ``_nat_policy``.
        network (str):
            The URL of the network this target instance
            uses to forward traffic. If not specified, the
            traffic will be forwarded to the network that
            the default network interface belongs to.

            This field is a member of `oneof`_ ``_network``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        zone (str):
            [Output Only] URL of the zone where the target instance
            resides. You must specify this field as part of the HTTP
            request URL. It is not settable as a field in the request
            body.

            This field is a member of `oneof`_ ``_zone``.
    """

    class NatPolicy(proto.Enum):
        r"""Must have a value of NO_NAT. Protocol forwarding delivers packets
        while preserving the destination IP address of the forwarding rule
        referencing the target instance.

        Values:
            UNDEFINED_NAT_POLICY (0):
                A value indicating that the enum field is not
                set.
            NO_NAT (161455491):
                No NAT performed.
        """
        UNDEFINED_NAT_POLICY = 0
        NO_NAT = 161455491

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    nat_policy: str = proto.Field(
        proto.STRING,
        number=509780496,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
        optional=True,
    )


class TargetInstanceAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.TargetInstancesScopedList]):
            A list of TargetInstance resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "TargetInstancesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="TargetInstancesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetInstanceList(proto.Message):
    r"""Contains a list of TargetInstance resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.TargetInstance]):
            A list of TargetInstance resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["TargetInstance"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="TargetInstance",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetInstancesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target_instances (MutableSequence[google.cloud.compute_v1.types.TargetInstance]):
            A list of target instances contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of addresses when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    target_instances: MutableSequence["TargetInstance"] = proto.RepeatedField(
        proto.MESSAGE,
        number=392915280,
        message="TargetInstance",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetPool(proto.Message):
    r"""Represents a Target Pool resource. Target pools are used for
    network TCP/UDP load balancing. A target pool references member
    instances, an associated legacy HttpHealthCheck resource, and,
    optionally, a backup target pool. For more information, read
    Using target pools.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backup_pool (str):
            The server-defined URL for the resource. This field is
            applicable only when the containing target pool is serving a
            forwarding rule as the primary pool, and its failoverRatio
            field is properly set to a value between [0, 1]. backupPool
            and failoverRatio together define the fallback behavior of
            the primary target pool: if the ratio of the healthy
            instances in the primary pool is at or below failoverRatio,
            traffic arriving at the load-balanced IP will be directed to
            the backup pool. In case where failoverRatio and backupPool
            are not set, or all the instances in the backup pool are
            unhealthy, the traffic will be directed back to the primary
            pool in the "force" mode, where traffic will be spread to
            the healthy instances with the best effort, or to all
            instances when no instance is healthy.

            This field is a member of `oneof`_ ``_backup_pool``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        failover_ratio (float):
            This field is applicable only when the containing target
            pool is serving a forwarding rule as the primary pool (i.e.,
            not as a backup pool to some other target pool). The value
            of the field must be in [0, 1]. If set, backupPool must also
            be set. They together define the fallback behavior of the
            primary target pool: if the ratio of the healthy instances
            in the primary pool is at or below this number, traffic
            arriving at the load-balanced IP will be directed to the
            backup pool. In case where failoverRatio is not set or all
            the instances in the backup pool are unhealthy, the traffic
            will be directed back to the primary pool in the "force"
            mode, where traffic will be spread to the healthy instances
            with the best effort, or to all instances when no instance
            is healthy.

            This field is a member of `oneof`_ ``_failover_ratio``.
        health_checks (MutableSequence[str]):
            The URL of the HttpHealthCheck resource. A
            member instance in this pool is considered
            healthy if and only if the health checks pass.
            Only legacy HttpHealthChecks are supported. Only
            one health check may be specified.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        instances (MutableSequence[str]):
            A list of resource URLs to the virtual
            machine instances serving this pool. They must
            live in zones contained in the same region as
            this pool.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#targetPool for target pools.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        region (str):
            [Output Only] URL of the region where the target pool
            resides.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        session_affinity (str):
            Session affinity option, must be one of the following
            values: NONE: Connections from the same client IP may go to
            any instance in the pool. CLIENT_IP: Connections from the
            same client IP will go to the same instance in the pool
            while that instance remains healthy. CLIENT_IP_PROTO:
            Connections from the same client IP with the same IP
            protocol will go to the same instance in the pool while that
            instance remains healthy. Check the SessionAffinity enum for
            the list of possible values.

            This field is a member of `oneof`_ ``_session_affinity``.
    """

    class SessionAffinity(proto.Enum):
        r"""Session affinity option, must be one of the following values: NONE:
        Connections from the same client IP may go to any instance in the
        pool. CLIENT_IP: Connections from the same client IP will go to the
        same instance in the pool while that instance remains healthy.
        CLIENT_IP_PROTO: Connections from the same client IP with the same
        IP protocol will go to the same instance in the pool while that
        instance remains healthy.

        Values:
            UNDEFINED_SESSION_AFFINITY (0):
                A value indicating that the enum field is not
                set.
            CLIENT_IP (345665051):
                2-tuple hash on packet's source and
                destination IP addresses. Connections from the
                same source IP address to the same destination
                IP address will be served by the same backend VM
                while that VM remains healthy.
            CLIENT_IP_NO_DESTINATION (106122516):
                1-tuple hash only on packet's source IP
                address. Connections from the same source IP
                address will be served by the same backend VM
                while that VM remains healthy. This option can
                only be used for Internal TCP/UDP Load
                Balancing.
            CLIENT_IP_PORT_PROTO (221722926):
                5-tuple hash on packet's source and
                destination IP addresses, IP protocol, and
                source and destination ports. Connections for
                the same IP protocol from the same source IP
                address and port to the same destination IP
                address and port will be served by the same
                backend VM while that VM remains healthy. This
                option cannot be used for HTTP(S) load
                balancing.
            CLIENT_IP_PROTO (25322148):
                3-tuple hash on packet's source and
                destination IP addresses, and IP protocol.
                Connections for the same IP protocol from the
                same source IP address to the same destination
                IP address will be served by the same backend VM
                while that VM remains healthy. This option
                cannot be used for HTTP(S) load balancing.
            GENERATED_COOKIE (370321204):
                Hash based on a cookie generated by the L7
                loadbalancer. Only valid for HTTP(S) load
                balancing.
            HEADER_FIELD (200737960):
                The hash is based on a user specified header
                field.
            HTTP_COOKIE (494981627):
                The hash is based on a user provided cookie.
            NONE (2402104):
                No session affinity. Connections from the
                same client IP may go to any instance in the
                pool.
        """
        UNDEFINED_SESSION_AFFINITY = 0
        CLIENT_IP = 345665051
        CLIENT_IP_NO_DESTINATION = 106122516
        CLIENT_IP_PORT_PROTO = 221722926
        CLIENT_IP_PROTO = 25322148
        GENERATED_COOKIE = 370321204
        HEADER_FIELD = 200737960
        HTTP_COOKIE = 494981627
        NONE = 2402104

    backup_pool: str = proto.Field(
        proto.STRING,
        number=45884537,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    failover_ratio: float = proto.Field(
        proto.FLOAT,
        number=212667006,
        optional=True,
    )
    health_checks: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=448370606,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    instances: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=29097598,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    session_affinity: str = proto.Field(
        proto.STRING,
        number=463888561,
        optional=True,
    )


class TargetPoolAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.TargetPoolsScopedList]):
            A list of TargetPool resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetPoolAggregatedList for aggregated lists of
            target pools.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "TargetPoolsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="TargetPoolsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetPoolInstanceHealth(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_status (MutableSequence[google.cloud.compute_v1.types.HealthStatus]):

        kind (str):
            [Output Only] Type of resource. Always
            compute#targetPoolInstanceHealth when checking the health of
            an instance.

            This field is a member of `oneof`_ ``_kind``.
    """

    health_status: MutableSequence["HealthStatus"] = proto.RepeatedField(
        proto.MESSAGE,
        number=380545845,
        message="HealthStatus",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )


class TargetPoolList(proto.Message):
    r"""Contains a list of TargetPool resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.TargetPool]):
            A list of TargetPool resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetPoolList for lists of target pools.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["TargetPool"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="TargetPool",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetPoolsAddHealthCheckRequest(proto.Message):
    r"""

    Attributes:
        health_checks (MutableSequence[google.cloud.compute_v1.types.HealthCheckReference]):
            The HttpHealthCheck to add to the target
            pool.
    """

    health_checks: MutableSequence["HealthCheckReference"] = proto.RepeatedField(
        proto.MESSAGE,
        number=448370606,
        message="HealthCheckReference",
    )


class TargetPoolsAddInstanceRequest(proto.Message):
    r"""

    Attributes:
        instances (MutableSequence[google.cloud.compute_v1.types.InstanceReference]):
            A full or partial URL to an instance to add
            to this target pool. This can be a full or
            partial URL. For example, the following are
            valid URLs: -
            https://www.googleapis.com/compute/v1/projects/project-id/zones/zone
            /instances/instance-name -
            projects/project-id/zones/zone/instances/instance-name
            - zones/zone/instances/instance-name
    """

    instances: MutableSequence["InstanceReference"] = proto.RepeatedField(
        proto.MESSAGE,
        number=29097598,
        message="InstanceReference",
    )


class TargetPoolsRemoveHealthCheckRequest(proto.Message):
    r"""

    Attributes:
        health_checks (MutableSequence[google.cloud.compute_v1.types.HealthCheckReference]):
            Health check URL to be removed. This can be a
            full or valid partial URL. For example, the
            following are valid URLs: -
            https://www.googleapis.com/compute/beta/projects/project
            /global/httpHealthChecks/health-check -
            projects/project/global/httpHealthChecks/health-check
            - global/httpHealthChecks/health-check
    """

    health_checks: MutableSequence["HealthCheckReference"] = proto.RepeatedField(
        proto.MESSAGE,
        number=448370606,
        message="HealthCheckReference",
    )


class TargetPoolsRemoveInstanceRequest(proto.Message):
    r"""

    Attributes:
        instances (MutableSequence[google.cloud.compute_v1.types.InstanceReference]):
            URLs of the instances to be removed from
            target pool.
    """

    instances: MutableSequence["InstanceReference"] = proto.RepeatedField(
        proto.MESSAGE,
        number=29097598,
        message="InstanceReference",
    )


class TargetPoolsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target_pools (MutableSequence[google.cloud.compute_v1.types.TargetPool]):
            A list of target pools contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of addresses when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    target_pools: MutableSequence["TargetPool"] = proto.RepeatedField(
        proto.MESSAGE,
        number=336072617,
        message="TargetPool",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetReference(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target (str):

            This field is a member of `oneof`_ ``_target``.
    """

    target: str = proto.Field(
        proto.STRING,
        number=192835985,
        optional=True,
    )


class TargetSslProxiesSetBackendServiceRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        service (str):
            The URL of the new BackendService resource
            for the targetSslProxy.

            This field is a member of `oneof`_ ``_service``.
    """

    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )


class TargetSslProxiesSetCertificateMapRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        certificate_map (str):
            URL of the Certificate Map to associate with
            this TargetSslProxy.

            This field is a member of `oneof`_ ``_certificate_map``.
    """

    certificate_map: str = proto.Field(
        proto.STRING,
        number=156463796,
        optional=True,
    )


class TargetSslProxiesSetProxyHeaderRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        proxy_header (str):
            The new type of proxy header to append before sending data
            to the backend. NONE or PROXY_V1 are allowed. Check the
            ProxyHeader enum for the list of possible values.

            This field is a member of `oneof`_ ``_proxy_header``.
    """

    class ProxyHeader(proto.Enum):
        r"""The new type of proxy header to append before sending data to the
        backend. NONE or PROXY_V1 are allowed.

        Values:
            UNDEFINED_PROXY_HEADER (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No description available.
            PROXY_V1 (334352940):
                No description available.
        """
        UNDEFINED_PROXY_HEADER = 0
        NONE = 2402104
        PROXY_V1 = 334352940

    proxy_header: str = proto.Field(
        proto.STRING,
        number=160374142,
        optional=True,
    )


class TargetSslProxiesSetSslCertificatesRequest(proto.Message):
    r"""

    Attributes:
        ssl_certificates (MutableSequence[str]):
            New set of URLs to SslCertificate resources
            to associate with this TargetSslProxy. At least
            one SSL certificate must be specified.
            Currently, you may specify up to 15 SSL
            certificates.
    """

    ssl_certificates: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=366006543,
    )


class TargetSslProxy(proto.Message):
    r"""Represents a Target SSL Proxy resource. A target SSL proxy is
    a component of a SSL Proxy load balancer. Global forwarding
    rules reference a target SSL proxy, and the target proxy then
    references an external backend service. For more information,
    read Using Target Proxies.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        certificate_map (str):
            URL of a certificate map that identifies a
            certificate map associated with the given target
            proxy. This field can only be set for global
            target proxies. If set, sslCertificates will be
            ignored.

            This field is a member of `oneof`_ ``_certificate_map``.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#targetSslProxy for target SSL proxies.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        proxy_header (str):
            Specifies the type of proxy header to append before sending
            data to the backend, either NONE or PROXY_V1. The default is
            NONE. Check the ProxyHeader enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_proxy_header``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        service (str):
            URL to the BackendService resource.

            This field is a member of `oneof`_ ``_service``.
        ssl_certificates (MutableSequence[str]):
            URLs to SslCertificate resources that are used to
            authenticate connections to Backends. At least one SSL
            certificate must be specified. Currently, you may specify up
            to 15 SSL certificates. sslCertificates do not apply when
            the load balancing scheme is set to INTERNAL_SELF_MANAGED.
        ssl_policy (str):
            URL of SslPolicy resource that will be
            associated with the TargetSslProxy resource. If
            not set, the TargetSslProxy resource will not
            have any SSL policy configured.

            This field is a member of `oneof`_ ``_ssl_policy``.
    """

    class ProxyHeader(proto.Enum):
        r"""Specifies the type of proxy header to append before sending data to
        the backend, either NONE or PROXY_V1. The default is NONE.

        Values:
            UNDEFINED_PROXY_HEADER (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No description available.
            PROXY_V1 (334352940):
                No description available.
        """
        UNDEFINED_PROXY_HEADER = 0
        NONE = 2402104
        PROXY_V1 = 334352940

    certificate_map: str = proto.Field(
        proto.STRING,
        number=156463796,
        optional=True,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    proxy_header: str = proto.Field(
        proto.STRING,
        number=160374142,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )
    ssl_certificates: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=366006543,
    )
    ssl_policy: str = proto.Field(
        proto.STRING,
        number=295190213,
        optional=True,
    )


class TargetSslProxyList(proto.Message):
    r"""Contains a list of TargetSslProxy resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.TargetSslProxy]):
            A list of TargetSslProxy resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["TargetSslProxy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="TargetSslProxy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetTcpProxiesScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target_tcp_proxies (MutableSequence[google.cloud.compute_v1.types.TargetTcpProxy]):
            A list of TargetTcpProxies contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of backend services when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    target_tcp_proxies: MutableSequence["TargetTcpProxy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=262056832,
        message="TargetTcpProxy",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetTcpProxiesSetBackendServiceRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        service (str):
            The URL of the new BackendService resource
            for the targetTcpProxy.

            This field is a member of `oneof`_ ``_service``.
    """

    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )


class TargetTcpProxiesSetProxyHeaderRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        proxy_header (str):
            The new type of proxy header to append before sending data
            to the backend. NONE or PROXY_V1 are allowed. Check the
            ProxyHeader enum for the list of possible values.

            This field is a member of `oneof`_ ``_proxy_header``.
    """

    class ProxyHeader(proto.Enum):
        r"""The new type of proxy header to append before sending data to the
        backend. NONE or PROXY_V1 are allowed.

        Values:
            UNDEFINED_PROXY_HEADER (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No description available.
            PROXY_V1 (334352940):
                No description available.
        """
        UNDEFINED_PROXY_HEADER = 0
        NONE = 2402104
        PROXY_V1 = 334352940

    proxy_header: str = proto.Field(
        proto.STRING,
        number=160374142,
        optional=True,
    )


class TargetTcpProxy(proto.Message):
    r"""Represents a Target TCP Proxy resource. A target TCP proxy is
    a component of a TCP Proxy load balancer. Global forwarding
    rules reference target TCP proxy, and the target proxy then
    references an external backend service. For more information,
    read TCP Proxy Load Balancing overview.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always
            compute#targetTcpProxy for target TCP proxies.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        proxy_bind (bool):
            This field only applies when the forwarding rule that
            references this target proxy has a loadBalancingScheme set
            to INTERNAL_SELF_MANAGED. When this field is set to true,
            Envoy proxies set up inbound traffic interception and bind
            to the IP address and port specified in the forwarding rule.
            This is generally useful when using Traffic Director to
            configure Envoy as a gateway or middle proxy (in other
            words, not a sidecar proxy). The Envoy proxy listens for
            inbound requests and handles requests when it receives them.
            The default is false.

            This field is a member of `oneof`_ ``_proxy_bind``.
        proxy_header (str):
            Specifies the type of proxy header to append before sending
            data to the backend, either NONE or PROXY_V1. The default is
            NONE. Check the ProxyHeader enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_proxy_header``.
        region (str):
            [Output Only] URL of the region where the regional TCP proxy
            resides. This field is not applicable to global TCP proxy.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        service (str):
            URL to the BackendService resource.

            This field is a member of `oneof`_ ``_service``.
    """

    class ProxyHeader(proto.Enum):
        r"""Specifies the type of proxy header to append before sending data to
        the backend, either NONE or PROXY_V1. The default is NONE.

        Values:
            UNDEFINED_PROXY_HEADER (0):
                A value indicating that the enum field is not
                set.
            NONE (2402104):
                No description available.
            PROXY_V1 (334352940):
                No description available.
        """
        UNDEFINED_PROXY_HEADER = 0
        NONE = 2402104
        PROXY_V1 = 334352940

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    proxy_bind: bool = proto.Field(
        proto.BOOL,
        number=286025582,
        optional=True,
    )
    proxy_header: str = proto.Field(
        proto.STRING,
        number=160374142,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )


class TargetTcpProxyAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.TargetTcpProxiesScopedList]):
            A list of TargetTcpProxiesScopedList
            resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetTcpProxyAggregatedList for lists of Target TCP
            Proxies.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "TargetTcpProxiesScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="TargetTcpProxiesScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetTcpProxyList(proto.Message):
    r"""Contains a list of TargetTcpProxy resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.TargetTcpProxy]):
            A list of TargetTcpProxy resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["TargetTcpProxy"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="TargetTcpProxy",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetVpnGateway(proto.Message):
    r"""Represents a Target VPN Gateway resource. The target VPN
    gateway resource represents a Classic Cloud VPN gateway. For
    more information, read the the Cloud VPN Overview.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        forwarding_rules (MutableSequence[str]):
            [Output Only] A list of URLs to the ForwardingRule
            resources. ForwardingRules are created using
            compute.forwardingRules.insert and associated with a VPN
            gateway.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetVpnGateway for target VPN gateways.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            URL of the network to which this VPN gateway
            is attached. Provided by the client when the VPN
            gateway is created.

            This field is a member of `oneof`_ ``_network``.
        region (str):
            [Output Only] URL of the region where the target VPN gateway
            resides. You must specify this field as part of the HTTP
            request URL. It is not settable as a field in the request
            body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        status (str):
            [Output Only] The status of the VPN gateway, which can be
            one of the following: CREATING, READY, FAILED, or DELETING.
            Check the Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        tunnels (MutableSequence[str]):
            [Output Only] A list of URLs to VpnTunnel resources.
            VpnTunnels are created using the compute.vpntunnels.insert
            method and associated with a VPN gateway.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of the VPN gateway, which can be one of the
        following: CREATING, READY, FAILED, or DELETING.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            CREATING (455564985):
                No description available.
            DELETING (528602024):
                No description available.
            FAILED (455706685):
                No description available.
            READY (77848963):
                No description available.
        """
        UNDEFINED_STATUS = 0
        CREATING = 455564985
        DELETING = 528602024
        FAILED = 455706685
        READY = 77848963

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    forwarding_rules: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=315821365,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    tunnels: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=104561931,
    )


class TargetVpnGatewayAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.TargetVpnGatewaysScopedList]):
            A list of TargetVpnGateway resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetVpnGateway for target VPN gateways.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "TargetVpnGatewaysScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="TargetVpnGatewaysScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetVpnGatewayList(proto.Message):
    r"""Contains a list of TargetVpnGateway resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.TargetVpnGateway]):
            A list of TargetVpnGateway resources.
        kind (str):
            [Output Only] Type of resource. Always
            compute#targetVpnGateway for target VPN gateways.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["TargetVpnGateway"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="TargetVpnGateway",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TargetVpnGatewaysScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        target_vpn_gateways (MutableSequence[google.cloud.compute_v1.types.TargetVpnGateway]):
            [Output Only] A list of target VPN gateways contained in
            this scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of addresses when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    target_vpn_gateways: MutableSequence["TargetVpnGateway"] = proto.RepeatedField(
        proto.MESSAGE,
        number=401770888,
        message="TargetVpnGateway",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class TestFailure(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        actual_output_url (str):
            The actual output URL evaluated by a load
            balancer containing the scheme, host, path and
            query parameters.

            This field is a member of `oneof`_ ``_actual_output_url``.
        actual_redirect_response_code (int):
            Actual HTTP status code for rule with ``urlRedirect``
            calculated by load balancer

            This field is a member of `oneof`_ ``_actual_redirect_response_code``.
        actual_service (str):
            BackendService or BackendBucket returned by
            load balancer.

            This field is a member of `oneof`_ ``_actual_service``.
        expected_output_url (str):
            The expected output URL evaluated by a load
            balancer containing the scheme, host, path and
            query parameters.

            This field is a member of `oneof`_ ``_expected_output_url``.
        expected_redirect_response_code (int):
            Expected HTTP status code for rule with ``urlRedirect``
            calculated by load balancer

            This field is a member of `oneof`_ ``_expected_redirect_response_code``.
        expected_service (str):
            Expected BackendService or BackendBucket
            resource the given URL should be mapped to.

            This field is a member of `oneof`_ ``_expected_service``.
        headers (MutableSequence[google.cloud.compute_v1.types.UrlMapTestHeader]):
            HTTP headers of the request.
        host (str):
            Host portion of the URL.

            This field is a member of `oneof`_ ``_host``.
        path (str):
            Path portion including query parameters in
            the URL.

            This field is a member of `oneof`_ ``_path``.
    """

    actual_output_url: str = proto.Field(
        proto.STRING,
        number=287075458,
        optional=True,
    )
    actual_redirect_response_code: int = proto.Field(
        proto.INT32,
        number=42926553,
        optional=True,
    )
    actual_service: str = proto.Field(
        proto.STRING,
        number=440379652,
        optional=True,
    )
    expected_output_url: str = proto.Field(
        proto.STRING,
        number=433967384,
        optional=True,
    )
    expected_redirect_response_code: int = proto.Field(
        proto.INT32,
        number=18888047,
        optional=True,
    )
    expected_service: str = proto.Field(
        proto.STRING,
        number=133987374,
        optional=True,
    )
    headers: MutableSequence["UrlMapTestHeader"] = proto.RepeatedField(
        proto.MESSAGE,
        number=258436998,
        message="UrlMapTestHeader",
    )
    host: str = proto.Field(
        proto.STRING,
        number=3208616,
        optional=True,
    )
    path: str = proto.Field(
        proto.STRING,
        number=3433509,
        optional=True,
    )


class TestIamPermissionsDiskRequest(proto.Message):
    r"""A request message for Disks.TestIamPermissions. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class TestIamPermissionsExternalVpnGatewayRequest(proto.Message):
    r"""A request message for ExternalVpnGateways.TestIamPermissions.
    See the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsFirewallPolicyRequest(proto.Message):
    r"""A request message for FirewallPolicies.TestIamPermissions.
    See the method description for details.

    Attributes:
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsImageRequest(proto.Message):
    r"""A request message for Images.TestIamPermissions. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsInstanceRequest(proto.Message):
    r"""A request message for Instances.TestIamPermissions. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class TestIamPermissionsInstanceTemplateRequest(proto.Message):
    r"""A request message for InstanceTemplates.TestIamPermissions.
    See the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsLicenseCodeRequest(proto.Message):
    r"""A request message for LicenseCodes.TestIamPermissions. See
    the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsLicenseRequest(proto.Message):
    r"""A request message for Licenses.TestIamPermissions. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsMachineImageRequest(proto.Message):
    r"""A request message for MachineImages.TestIamPermissions. See
    the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsNetworkAttachmentRequest(proto.Message):
    r"""A request message for NetworkAttachments.TestIamPermissions.
    See the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsNetworkEndpointGroupRequest(proto.Message):
    r"""A request message for
    NetworkEndpointGroups.TestIamPermissions. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class TestIamPermissionsNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    NetworkFirewallPolicies.TestIamPermissions. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsNodeGroupRequest(proto.Message):
    r"""A request message for NodeGroups.TestIamPermissions. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class TestIamPermissionsNodeTemplateRequest(proto.Message):
    r"""A request message for NodeTemplates.TestIamPermissions. See
    the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsPacketMirroringRequest(proto.Message):
    r"""A request message for PacketMirrorings.TestIamPermissions.
    See the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.TestIamPermissions. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsRegionNetworkFirewallPolicyRequest(proto.Message):
    r"""A request message for
    RegionNetworkFirewallPolicies.TestIamPermissions. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsReservationRequest(proto.Message):
    r"""A request message for Reservations.TestIamPermissions. See
    the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class TestIamPermissionsResourcePolicyRequest(proto.Message):
    r"""A request message for ResourcePolicies.TestIamPermissions.
    See the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsServiceAttachmentRequest(proto.Message):
    r"""A request message for ServiceAttachments.TestIamPermissions.
    See the method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsSnapshotRequest(proto.Message):
    r"""A request message for Snapshots.TestIamPermissions. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsSubnetworkRequest(proto.Message):
    r"""A request message for Subnetworks.TestIamPermissions. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestIamPermissionsVpnGatewayRequest(proto.Message):
    r"""A request message for VpnGateways.TestIamPermissions. See the
    method description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        resource (str):
            Name or id of the resource for this request.
        test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    resource: str = proto.Field(
        proto.STRING,
        number=195806222,
    )
    test_permissions_request_resource: "TestPermissionsRequest" = proto.Field(
        proto.MESSAGE,
        number=439214758,
        message="TestPermissionsRequest",
    )


class TestPermissionsRequest(proto.Message):
    r"""

    Attributes:
        permissions (MutableSequence[str]):
            The set of permissions to check for the 'resource'.
            Permissions with wildcards (such as '*' or 'storage.*') are
            not allowed.
    """

    permissions: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=59962500,
    )


class TestPermissionsResponse(proto.Message):
    r"""

    Attributes:
        permissions (MutableSequence[str]):
            A subset of ``TestPermissionsRequest.permissions`` that the
            caller is allowed.
    """

    permissions: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=59962500,
    )


class Uint128(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        high (int):

            This field is a member of `oneof`_ ``_high``.
        low (int):

            This field is a member of `oneof`_ ``_low``.
    """

    high: int = proto.Field(
        proto.UINT64,
        number=3202466,
        optional=True,
    )
    low: int = proto.Field(
        proto.UINT64,
        number=107348,
        optional=True,
    )


class UpdateAccessConfigInstanceRequest(proto.Message):
    r"""A request message for Instances.UpdateAccessConfig. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        access_config_resource (google.cloud.compute_v1.types.AccessConfig):
            The body resource for this request
        instance (str):
            The instance name for this request.
        network_interface (str):
            The name of the network interface where the
            access config is attached.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    access_config_resource: "AccessConfig" = proto.Field(
        proto.MESSAGE,
        number=387825552,
        message="AccessConfig",
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    network_interface: str = proto.Field(
        proto.STRING,
        number=365387880,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class UpdateAutoscalerRequest(proto.Message):
    r"""A request message for Autoscalers.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaler (str):
            Name of the autoscaler to update.

            This field is a member of `oneof`_ ``_autoscaler``.
        autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            Name of the zone for this request.
    """

    autoscaler: str = proto.Field(
        proto.STRING,
        number=517258967,
        optional=True,
    )
    autoscaler_resource: "Autoscaler" = proto.Field(
        proto.MESSAGE,
        number=207616118,
        message="Autoscaler",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class UpdateBackendBucketRequest(proto.Message):
    r"""A request message for BackendBuckets.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_bucket (str):
            Name of the BackendBucket resource to update.
        backend_bucket_resource (google.cloud.compute_v1.types.BackendBucket):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_bucket: str = proto.Field(
        proto.STRING,
        number=91714037,
    )
    backend_bucket_resource: "BackendBucket" = proto.Field(
        proto.MESSAGE,
        number=380757784,
        message="BackendBucket",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class UpdateBackendServiceRequest(proto.Message):
    r"""A request message for BackendServices.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to
            update.
        backend_service_resource (google.cloud.compute_v1.types.BackendService):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    backend_service_resource: "BackendService" = proto.Field(
        proto.MESSAGE,
        number=347586723,
        message="BackendService",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class UpdateDiskRequest(proto.Message):
    r"""A request message for Disks.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            The disk name for this request.
        disk_resource (google.cloud.compute_v1.types.Disk):
            The body resource for this request
        paths (str):

            This field is a member of `oneof`_ ``_paths``.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        update_mask (str):
            update_mask indicates fields to be updated as part of this
            request.

            This field is a member of `oneof`_ ``_update_mask``.
        zone (str):
            The name of the zone for this request.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    disk_resource: "Disk" = proto.Field(
        proto.MESSAGE,
        number=25880688,
        message="Disk",
    )
    paths: str = proto.Field(
        proto.STRING,
        number=106438894,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    update_mask: str = proto.Field(
        proto.STRING,
        number=500079778,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class UpdateDisplayDeviceInstanceRequest(proto.Message):
    r"""A request message for Instances.UpdateDisplayDevice. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        display_device_resource (google.cloud.compute_v1.types.DisplayDevice):
            The body resource for this request
        instance (str):
            Name of the instance scoping this request.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    display_device_resource: "DisplayDevice" = proto.Field(
        proto.MESSAGE,
        number=289686106,
        message="DisplayDevice",
    )
    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class UpdateFirewallRequest(proto.Message):
    r"""A request message for Firewalls.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        firewall (str):
            Name of the firewall rule to update.
        firewall_resource (google.cloud.compute_v1.types.Firewall):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    firewall: str = proto.Field(
        proto.STRING,
        number=511016192,
    )
    firewall_resource: "Firewall" = proto.Field(
        proto.MESSAGE,
        number=41425005,
        message="Firewall",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class UpdateHealthCheckRequest(proto.Message):
    r"""A request message for HealthChecks.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check (str):
            Name of the HealthCheck resource to update.
        health_check_resource (google.cloud.compute_v1.types.HealthCheck):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
    )
    health_check_resource: "HealthCheck" = proto.Field(
        proto.MESSAGE,
        number=201925032,
        message="HealthCheck",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class UpdateInstanceRequest(proto.Message):
    r"""A request message for Instances.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name of the instance resource to update.
        instance_resource (google.cloud.compute_v1.types.Instance):
            The body resource for this request
        minimal_action (str):
            Specifies the action to take when updating an
            instance even if the updated properties do not
            require it. If not specified, then Compute
            Engine acts based on the minimum action that the
            updated properties require. Check the
            MinimalAction enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_minimal_action``.
        most_disruptive_allowed_action (str):
            Specifies the most disruptive action that can be taken on
            the instance as part of the update. Compute Engine returns
            an error if the instance properties require a more
            disruptive action as part of the instance update. Valid
            options from lowest to highest are NO_EFFECT, REFRESH, and
            RESTART. Check the MostDisruptiveAllowedAction enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_most_disruptive_allowed_action``.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    class MinimalAction(proto.Enum):
        r"""Specifies the action to take when updating an instance even if the
        updated properties do not require it. If not specified, then Compute
        Engine acts based on the minimum action that the updated properties
        require. Additional supported values which may be not listed in the
        enum directly due to technical reasons: INVALID NO_EFFECT REFRESH
        RESTART

        Values:
            UNDEFINED_MINIMAL_ACTION (0):
                A value indicating that the enum field is not
                set.
        """
        UNDEFINED_MINIMAL_ACTION = 0

    class MostDisruptiveAllowedAction(proto.Enum):
        r"""Specifies the most disruptive action that can be taken on the
        instance as part of the update. Compute Engine returns an error if
        the instance properties require a more disruptive action as part of
        the instance update. Valid options from lowest to highest are
        NO_EFFECT, REFRESH, and RESTART. Additional supported values which
        may be not listed in the enum directly due to technical reasons:
        INVALID NO_EFFECT REFRESH RESTART

        Values:
            UNDEFINED_MOST_DISRUPTIVE_ALLOWED_ACTION (0):
                A value indicating that the enum field is not
                set.
        """
        UNDEFINED_MOST_DISRUPTIVE_ALLOWED_ACTION = 0

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    instance_resource: "Instance" = proto.Field(
        proto.MESSAGE,
        number=215988344,
        message="Instance",
    )
    minimal_action: str = proto.Field(
        proto.STRING,
        number=270567060,
        optional=True,
    )
    most_disruptive_allowed_action: str = proto.Field(
        proto.STRING,
        number=66103053,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class UpdateNetworkInterfaceInstanceRequest(proto.Message):
    r"""A request message for Instances.UpdateNetworkInterface. See
    the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            The instance name for this request.
        network_interface (str):
            The name of the network interface to update.
        network_interface_resource (google.cloud.compute_v1.types.NetworkInterface):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    network_interface: str = proto.Field(
        proto.STRING,
        number=365387880,
    )
    network_interface_resource: "NetworkInterface" = proto.Field(
        proto.MESSAGE,
        number=325814789,
        message="NetworkInterface",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class UpdatePeeringNetworkRequest(proto.Message):
    r"""A request message for Networks.UpdatePeering. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        network (str):
            Name of the network resource which the
            updated peering is belonging to.
        networks_update_peering_request_resource (google.cloud.compute_v1.types.NetworksUpdatePeeringRequest):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    network: str = proto.Field(
        proto.STRING,
        number=232872494,
    )
    networks_update_peering_request_resource: "NetworksUpdatePeeringRequest" = (
        proto.Field(
            proto.MESSAGE,
            number=224433497,
            message="NetworksUpdatePeeringRequest",
        )
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class UpdatePerInstanceConfigsInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    InstanceGroupManagers.UpdatePerInstanceConfigs. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        instance_group_managers_update_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersUpdatePerInstanceConfigsReq):
            The body resource for this request
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        zone (str):
            The name of the zone where the managed
            instance group is located. It should conform to
            RFC1035.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    instance_group_managers_update_per_instance_configs_req_resource: "InstanceGroupManagersUpdatePerInstanceConfigsReq" = proto.Field(
        proto.MESSAGE,
        number=141402302,
        message="InstanceGroupManagersUpdatePerInstanceConfigsReq",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest(proto.Message):
    r"""A request message for
    RegionInstanceGroupManagers.UpdatePerInstanceConfigs. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_group_manager (str):
            The name of the managed instance group. It
            should conform to RFC1035.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request,
            should conform to RFC1035.
        region_instance_group_manager_update_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerUpdateInstanceConfigReq):
            The body resource for this request
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    instance_group_manager: str = proto.Field(
        proto.STRING,
        number=249363395,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_instance_group_manager_update_instance_config_req_resource: "RegionInstanceGroupManagerUpdateInstanceConfigReq" = proto.Field(
        proto.MESSAGE,
        number=89036583,
        message="RegionInstanceGroupManagerUpdateInstanceConfigReq",
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class UpdateRegionAutoscalerRequest(proto.Message):
    r"""A request message for RegionAutoscalers.Update. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        autoscaler (str):
            Name of the autoscaler to update.

            This field is a member of `oneof`_ ``_autoscaler``.
        autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    autoscaler: str = proto.Field(
        proto.STRING,
        number=517258967,
        optional=True,
    )
    autoscaler_resource: "Autoscaler" = proto.Field(
        proto.MESSAGE,
        number=207616118,
        message="Autoscaler",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class UpdateRegionBackendServiceRequest(proto.Message):
    r"""A request message for RegionBackendServices.Update. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            Name of the BackendService resource to
            update.
        backend_service_resource (google.cloud.compute_v1.types.BackendService):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
    )
    backend_service_resource: "BackendService" = proto.Field(
        proto.MESSAGE,
        number=347586723,
        message="BackendService",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class UpdateRegionCommitmentRequest(proto.Message):
    r"""A request message for RegionCommitments.Update. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        commitment (str):
            Name of the commitment for which auto renew
            is being updated.
        commitment_resource (google.cloud.compute_v1.types.Commitment):
            The body resource for this request
        paths (str):

            This field is a member of `oneof`_ ``_paths``.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        update_mask (str):
            update_mask indicates fields to be updated as part of this
            request.

            This field is a member of `oneof`_ ``_update_mask``.
    """

    commitment: str = proto.Field(
        proto.STRING,
        number=482134805,
    )
    commitment_resource: "Commitment" = proto.Field(
        proto.MESSAGE,
        number=244240888,
        message="Commitment",
    )
    paths: str = proto.Field(
        proto.STRING,
        number=106438894,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    update_mask: str = proto.Field(
        proto.STRING,
        number=500079778,
        optional=True,
    )


class UpdateRegionDiskRequest(proto.Message):
    r"""A request message for RegionDisks.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        disk (str):
            The disk name for this request.
        disk_resource (google.cloud.compute_v1.types.Disk):
            The body resource for this request
        paths (str):

            This field is a member of `oneof`_ ``_paths``.
        project (str):
            Project ID for this request.
        region (str):
            The name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        update_mask (str):
            update_mask indicates fields to be updated as part of this
            request.

            This field is a member of `oneof`_ ``_update_mask``.
    """

    disk: str = proto.Field(
        proto.STRING,
        number=3083677,
    )
    disk_resource: "Disk" = proto.Field(
        proto.MESSAGE,
        number=25880688,
        message="Disk",
    )
    paths: str = proto.Field(
        proto.STRING,
        number=106438894,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    update_mask: str = proto.Field(
        proto.STRING,
        number=500079778,
        optional=True,
    )


class UpdateRegionHealthCheckRequest(proto.Message):
    r"""A request message for RegionHealthChecks.Update. See the
    method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        health_check (str):
            Name of the HealthCheck resource to update.
        health_check_resource (google.cloud.compute_v1.types.HealthCheck):
            The body resource for this request
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
    """

    health_check: str = proto.Field(
        proto.STRING,
        number=308876645,
    )
    health_check_resource: "HealthCheck" = proto.Field(
        proto.MESSAGE,
        number=201925032,
        message="HealthCheck",
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )


class UpdateRegionUrlMapRequest(proto.Message):
    r"""A request message for RegionUrlMaps.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        request_id (str):
            begin_interface: MixerMutationRequestBuilder Request ID to
            support idempotency.

            This field is a member of `oneof`_ ``_request_id``.
        url_map (str):
            Name of the UrlMap resource to update.
        url_map_resource (google.cloud.compute_v1.types.UrlMap):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )
    url_map_resource: "UrlMap" = proto.Field(
        proto.MESSAGE,
        number=168675425,
        message="UrlMap",
    )


class UpdateReservationRequest(proto.Message):
    r"""A request message for Reservations.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        paths (str):

            This field is a member of `oneof`_ ``_paths``.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        reservation (str):
            Name of the reservation to update.
        reservation_resource (google.cloud.compute_v1.types.Reservation):
            The body resource for this request
        update_mask (str):
            Update_mask indicates fields to be updated as part of this
            request.

            This field is a member of `oneof`_ ``_update_mask``.
        zone (str):
            Name of the zone for this request.
    """

    paths: str = proto.Field(
        proto.STRING,
        number=106438894,
        optional=True,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    reservation: str = proto.Field(
        proto.STRING,
        number=47530956,
    )
    reservation_resource: "Reservation" = proto.Field(
        proto.MESSAGE,
        number=285030177,
        message="Reservation",
    )
    update_mask: str = proto.Field(
        proto.STRING,
        number=500079778,
        optional=True,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class UpdateRouterRequest(proto.Message):
    r"""A request message for Routers.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        router (str):
            Name of the Router resource to update.
        router_resource (google.cloud.compute_v1.types.Router):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    router: str = proto.Field(
        proto.STRING,
        number=148608841,
    )
    router_resource: "Router" = proto.Field(
        proto.MESSAGE,
        number=155222084,
        message="Router",
    )


class UpdateShieldedInstanceConfigInstanceRequest(proto.Message):
    r"""A request message for Instances.UpdateShieldedInstanceConfig.
    See the method description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance (str):
            Name or id of the instance scoping this
            request.
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        shielded_instance_config_resource (google.cloud.compute_v1.types.ShieldedInstanceConfig):
            The body resource for this request
        zone (str):
            The name of the zone for this request.
    """

    instance: str = proto.Field(
        proto.STRING,
        number=18257045,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    shielded_instance_config_resource: "ShieldedInstanceConfig" = proto.Field(
        proto.MESSAGE,
        number=272059224,
        message="ShieldedInstanceConfig",
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class UpdateUrlMapRequest(proto.Message):
    r"""A request message for UrlMaps.Update. See the method
    description for details.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        project (str):
            Project ID for this request.
        request_id (str):
            An optional request ID to identify requests.
            Specify a unique request ID so that if you must
            retry your request, the server will know to
            ignore the request if it has already been
            completed. For example, consider a situation
            where you make an initial request and the
            request times out. If you make the request again
            with the same request ID, the server can check
            if original operation with the same request ID
            was received, and if so, will ignore the second
            request. This prevents clients from accidentally
            creating duplicate commitments. The request ID
            must be a valid UUID with the exception that
            zero UUID is not supported (
            00000000-0000-0000-0000-000000000000).

            This field is a member of `oneof`_ ``_request_id``.
        url_map (str):
            Name of the UrlMap resource to update.
        url_map_resource (google.cloud.compute_v1.types.UrlMap):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    request_id: str = proto.Field(
        proto.STRING,
        number=37109963,
        optional=True,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )
    url_map_resource: "UrlMap" = proto.Field(
        proto.MESSAGE,
        number=168675425,
        message="UrlMap",
    )


class UrlMap(proto.Message):
    r"""Represents a URL Map resource. Compute Engine has two URL Map
    resources: \* `Global </compute/docs/reference/rest/v1/urlMaps>`__
    \* `Regional </compute/docs/reference/rest/v1/regionUrlMaps>`__ A
    URL map resource is a component of certain types of cloud load
    balancers and Traffic Director: \* urlMaps are used by external
    HTTP(S) load balancers and Traffic Director. \* regionUrlMaps are
    used by internal HTTP(S) load balancers. For a list of supported URL
    map features by the load balancer type, see the Load balancing
    features: Routing and traffic management table. For a list of
    supported URL map features for Traffic Director, see the Traffic
    Director features: Routing and traffic management table. This
    resource defines mappings from hostnames and URL paths to either a
    backend service or a backend bucket. To use the global urlMaps
    resource, the backend service must have a loadBalancingScheme of
    either EXTERNAL or INTERNAL_SELF_MANAGED. To use the regionUrlMaps
    resource, the backend service must have a loadBalancingScheme of
    INTERNAL_MANAGED. For more information, read URL Map Concepts.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        default_route_action (google.cloud.compute_v1.types.HttpRouteAction):
            defaultRouteAction takes effect when none of
            the hostRules match. The load balancer performs
            advanced routing actions, such as URL rewrites
            and header transformations, before forwarding
            the request to the selected backend. If
            defaultRouteAction specifies any
            weightedBackendServices, defaultService must not
            be set. Conversely if defaultService is set,
            defaultRouteAction cannot contain any
            weightedBackendServices. Only one of
            defaultRouteAction or defaultUrlRedirect must be
            set. URL maps for Classic external HTTP(S) load
            balancers only support the urlRewrite action
            within defaultRouteAction. defaultRouteAction
            has no effect when the URL map is bound to a
            target gRPC proxy that has the
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_default_route_action``.
        default_service (str):
            The full or partial URL of the defaultService
            resource to which traffic is directed if none of
            the hostRules match. If defaultRouteAction is
            also specified, advanced routing actions, such
            as URL rewrites, take effect before sending the
            request to the backend. However, if
            defaultService is specified, defaultRouteAction
            cannot contain any weightedBackendServices.
            Conversely, if routeAction specifies any
            weightedBackendServices, service must not be
            specified. Only one of defaultService,
            defaultUrlRedirect , or
            defaultRouteAction.weightedBackendService must
            be set. defaultService has no effect when the
            URL map is bound to a target gRPC proxy that has
            the validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_default_service``.
        default_url_redirect (google.cloud.compute_v1.types.HttpRedirectAction):
            When none of the specified hostRules match,
            the request is redirected to a URL specified by
            defaultUrlRedirect. If defaultUrlRedirect is
            specified, defaultService or defaultRouteAction
            must not be set. Not supported when the URL map
            is bound to a target gRPC proxy.

            This field is a member of `oneof`_ ``_default_url_redirect``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        fingerprint (str):
            Fingerprint of this resource. A hash of the
            contents stored in this object. This field is
            used in optimistic locking. This field is
            ignored when inserting a UrlMap. An up-to-date
            fingerprint must be provided in order to update
            the UrlMap, otherwise the request will fail with
            error 412 conditionNotMet. To see the latest
            fingerprint, make a get() request to retrieve a
            UrlMap.

            This field is a member of `oneof`_ ``_fingerprint``.
        header_action (google.cloud.compute_v1.types.HttpHeaderAction):
            Specifies changes to request and response
            headers that need to take effect for the
            selected backendService. The headerAction
            specified here take effect after headerAction
            specified under pathMatcher. headerAction is not
            supported for load balancers that have their
            loadBalancingScheme set to EXTERNAL. Not
            supported when the URL map is bound to a target
            gRPC proxy that has validateForProxyless field
            set to true.

            This field is a member of `oneof`_ ``_header_action``.
        host_rules (MutableSequence[google.cloud.compute_v1.types.HostRule]):
            The list of host rules to use against the
            URL.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always compute#urlMaps
            for url maps.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        path_matchers (MutableSequence[google.cloud.compute_v1.types.PathMatcher]):
            The list of named PathMatchers to use against
            the URL.
        region (str):
            [Output Only] URL of the region where the regional URL map
            resides. This field is not applicable to global URL maps.
            You must specify this field as part of the HTTP request URL.
            It is not settable as a field in the request body.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        tests (MutableSequence[google.cloud.compute_v1.types.UrlMapTest]):
            The list of expected URL mapping tests.
            Request to update the UrlMap succeeds only if
            all test cases pass. You can specify a maximum
            of 100 tests per UrlMap. Not supported when the
            URL map is bound to a target gRPC proxy that has
            validateForProxyless field set to true.
    """

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    default_route_action: "HttpRouteAction" = proto.Field(
        proto.MESSAGE,
        number=378919466,
        optional=True,
        message="HttpRouteAction",
    )
    default_service: str = proto.Field(
        proto.STRING,
        number=370242231,
        optional=True,
    )
    default_url_redirect: "HttpRedirectAction" = proto.Field(
        proto.MESSAGE,
        number=359503338,
        optional=True,
        message="HttpRedirectAction",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    fingerprint: str = proto.Field(
        proto.STRING,
        number=234678500,
        optional=True,
    )
    header_action: "HttpHeaderAction" = proto.Field(
        proto.MESSAGE,
        number=328077352,
        optional=True,
        message="HttpHeaderAction",
    )
    host_rules: MutableSequence["HostRule"] = proto.RepeatedField(
        proto.MESSAGE,
        number=311804832,
        message="HostRule",
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    path_matchers: MutableSequence["PathMatcher"] = proto.RepeatedField(
        proto.MESSAGE,
        number=271664219,
        message="PathMatcher",
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    tests: MutableSequence["UrlMapTest"] = proto.RepeatedField(
        proto.MESSAGE,
        number=110251553,
        message="UrlMapTest",
    )


class UrlMapList(proto.Message):
    r"""Contains a list of UrlMap resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.UrlMap]):
            A list of UrlMap resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["UrlMap"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="UrlMap",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class UrlMapReference(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        url_map (str):

            This field is a member of `oneof`_ ``_url_map``.
    """

    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
        optional=True,
    )


class UrlMapTest(proto.Message):
    r"""Message for the expected URL mappings.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        description (str):
            Description of this test case.

            This field is a member of `oneof`_ ``_description``.
        expected_output_url (str):
            The expected output URL evaluated by the load balancer
            containing the scheme, host, path and query parameters. For
            rules that forward requests to backends, the test passes
            only when expectedOutputUrl matches the request forwarded by
            the load balancer to backends. For rules with urlRewrite,
            the test verifies that the forwarded request matches
            hostRewrite and pathPrefixRewrite in the urlRewrite action.
            When service is specified, expectedOutputUrl`s scheme is
            ignored. For rules with urlRedirect, the test passes only if
            expectedOutputUrl matches the URL in the load balancer's
            redirect response. If urlRedirect specifies https_redirect,
            the test passes only if the scheme in expectedOutputUrl is
            also set to HTTPS. If urlRedirect specifies strip_query, the
            test passes only if expectedOutputUrl does not contain any
            query parameters. expectedOutputUrl is optional when service
            is specified.

            This field is a member of `oneof`_ ``_expected_output_url``.
        expected_redirect_response_code (int):
            For rules with urlRedirect, the test passes
            only if expectedRedirectResponseCode matches the
            HTTP status code in load balancer's redirect
            response. expectedRedirectResponseCode cannot be
            set when service is set.

            This field is a member of `oneof`_ ``_expected_redirect_response_code``.
        headers (MutableSequence[google.cloud.compute_v1.types.UrlMapTestHeader]):
            HTTP headers for this request. If headers
            contains a host header, then host must also
            match the header value.
        host (str):
            Host portion of the URL. If headers contains
            a host header, then host must also match the
            header value.

            This field is a member of `oneof`_ ``_host``.
        path (str):
            Path portion of the URL.

            This field is a member of `oneof`_ ``_path``.
        service (str):
            Expected BackendService or BackendBucket
            resource the given URL should be mapped to. The
            service field cannot be set if
            expectedRedirectResponseCode is set.

            This field is a member of `oneof`_ ``_service``.
    """

    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    expected_output_url: str = proto.Field(
        proto.STRING,
        number=433967384,
        optional=True,
    )
    expected_redirect_response_code: int = proto.Field(
        proto.INT32,
        number=18888047,
        optional=True,
    )
    headers: MutableSequence["UrlMapTestHeader"] = proto.RepeatedField(
        proto.MESSAGE,
        number=258436998,
        message="UrlMapTestHeader",
    )
    host: str = proto.Field(
        proto.STRING,
        number=3208616,
        optional=True,
    )
    path: str = proto.Field(
        proto.STRING,
        number=3433509,
        optional=True,
    )
    service: str = proto.Field(
        proto.STRING,
        number=373540533,
        optional=True,
    )


class UrlMapTestHeader(proto.Message):
    r"""HTTP headers used in UrlMapTests.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        name (str):
            Header name.

            This field is a member of `oneof`_ ``_name``.
        value (str):
            Header value.

            This field is a member of `oneof`_ ``_value``.
    """

    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    value: str = proto.Field(
        proto.STRING,
        number=111972721,
        optional=True,
    )


class UrlMapValidationResult(proto.Message):
    r"""Message representing the validation result for a UrlMap.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        load_errors (MutableSequence[str]):

        load_succeeded (bool):
            Whether the given UrlMap can be successfully
            loaded. If false, 'loadErrors' indicates the
            reasons.

            This field is a member of `oneof`_ ``_load_succeeded``.
        test_failures (MutableSequence[google.cloud.compute_v1.types.TestFailure]):

        test_passed (bool):
            If successfully loaded, this field indicates
            whether the test passed. If false,
            'testFailures's indicate the reason of failure.

            This field is a member of `oneof`_ ``_test_passed``.
    """

    load_errors: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=310147300,
    )
    load_succeeded: bool = proto.Field(
        proto.BOOL,
        number=128326216,
        optional=True,
    )
    test_failures: MutableSequence["TestFailure"] = proto.RepeatedField(
        proto.MESSAGE,
        number=505934134,
        message="TestFailure",
    )
    test_passed: bool = proto.Field(
        proto.BOOL,
        number=192708797,
        optional=True,
    )


class UrlMapsAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.UrlMapsScopedList]):
            A list of UrlMapsScopedList resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "UrlMapsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="UrlMapsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class UrlMapsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        url_maps (MutableSequence[google.cloud.compute_v1.types.UrlMap]):
            A list of UrlMaps contained in this scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of backend services when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    url_maps: MutableSequence["UrlMap"] = proto.RepeatedField(
        proto.MESSAGE,
        number=103352167,
        message="UrlMap",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class UrlMapsValidateRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        load_balancing_schemes (MutableSequence[str]):
            Specifies the load balancer type(s) this validation request
            is for. Use EXTERNAL_MANAGED for HTTP/HTTPS External Global
            Load Balancer with Advanced Traffic Management. Use EXTERNAL
            for Classic HTTP/HTTPS External Global Load Balancer. Other
            load balancer types are not supported. For more information,
            refer to Choosing a load balancer. If unspecified, the load
            balancing scheme will be inferred from the backend service
            resources this URL map references. If that can not be
            inferred (for example, this URL map only references backend
            buckets, or this Url map is for rewrites and redirects only
            and doesn't reference any backends), EXTERNAL will be used
            as the default type. If specified, the scheme(s) must not
            conflict with the load balancing scheme of the backend
            service resources this Url map references. Check the
            LoadBalancingSchemes enum for the list of possible values.
        resource (google.cloud.compute_v1.types.UrlMap):
            Content of the UrlMap to be validated.

            This field is a member of `oneof`_ ``_resource``.
    """

    class LoadBalancingSchemes(proto.Enum):
        r"""

        Values:
            UNDEFINED_LOAD_BALANCING_SCHEMES (0):
                A value indicating that the enum field is not
                set.
            EXTERNAL (35607499):
                Signifies that this will be used for Classic
                L7 External Load Balancing.
            EXTERNAL_MANAGED (512006923):
                Signifies that this will be used for
                Envoy-based L7 External Load Balancing.
            LOAD_BALANCING_SCHEME_UNSPECIFIED (526507452):
                If unspecified, the validation will try to
                infer the scheme from the backend service
                resources this Url map references. If the
                inferrence is not possible, EXTERNAL will be
                used as the default type.
        """
        UNDEFINED_LOAD_BALANCING_SCHEMES = 0
        EXTERNAL = 35607499
        EXTERNAL_MANAGED = 512006923
        LOAD_BALANCING_SCHEME_UNSPECIFIED = 526507452

    load_balancing_schemes: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=6308527,
    )
    resource: "UrlMap" = proto.Field(
        proto.MESSAGE,
        number=195806222,
        optional=True,
        message="UrlMap",
    )


class UrlMapsValidateResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        result (google.cloud.compute_v1.types.UrlMapValidationResult):

            This field is a member of `oneof`_ ``_result``.
    """

    result: "UrlMapValidationResult" = proto.Field(
        proto.MESSAGE,
        number=139315229,
        optional=True,
        message="UrlMapValidationResult",
    )


class UrlRewrite(proto.Message):
    r"""The spec for modifying the path before sending the request to
    the matched backend service.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        host_rewrite (str):
            Before forwarding the request to the selected
            service, the request's host header is replaced
            with contents of hostRewrite. The value must be
            from 1 to 255 characters.

            This field is a member of `oneof`_ ``_host_rewrite``.
        path_prefix_rewrite (str):
            Before forwarding the request to the selected
            backend service, the matching portion of the
            request's path is replaced by pathPrefixRewrite.
            The value must be from 1 to 1024 characters.

            This field is a member of `oneof`_ ``_path_prefix_rewrite``.
    """

    host_rewrite: str = proto.Field(
        proto.STRING,
        number=159819253,
        optional=True,
    )
    path_prefix_rewrite: str = proto.Field(
        proto.STRING,
        number=41186361,
        optional=True,
    )


class UsableSubnetwork(proto.Message):
    r"""Subnetwork which the current user has compute.subnetworks.use
    permission on.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        external_ipv6_prefix (str):
            [Output Only] The external IPv6 address range that is
            assigned to this subnetwork.

            This field is a member of `oneof`_ ``_external_ipv6_prefix``.
        internal_ipv6_prefix (str):
            [Output Only] The internal IPv6 address range that is
            assigned to this subnetwork.

            This field is a member of `oneof`_ ``_internal_ipv6_prefix``.
        ip_cidr_range (str):
            The range of internal addresses that are
            owned by this subnetwork.

            This field is a member of `oneof`_ ``_ip_cidr_range``.
        ipv6_access_type (str):
            The access type of IPv6 address this subnet holds. It's
            immutable and can only be specified during creation or the
            first time the subnet is updated into IPV4_IPV6 dual stack.
            Check the Ipv6AccessType enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_ipv6_access_type``.
        network (str):
            Network URL.

            This field is a member of `oneof`_ ``_network``.
        purpose (str):
            The purpose of the resource. This field can be either
            PRIVATE_RFC_1918 or INTERNAL_HTTPS_LOAD_BALANCER. A
            subnetwork with purpose set to INTERNAL_HTTPS_LOAD_BALANCER
            is a user-created subnetwork that is reserved for Internal
            HTTP(S) Load Balancing. If unspecified, the purpose defaults
            to PRIVATE_RFC_1918. The enableFlowLogs field isn't
            supported with the purpose field set to
            INTERNAL_HTTPS_LOAD_BALANCER. Check the Purpose enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_purpose``.
        role (str):
            The role of subnetwork. Currently, this field is only used
            when purpose = INTERNAL_HTTPS_LOAD_BALANCER. The value can
            be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that
            is currently being used for Internal HTTP(S) Load Balancing.
            A BACKUP subnetwork is one that is ready to be promoted to
            ACTIVE or is currently draining. This field can be updated
            with a patch request. Check the Role enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_role``.
        secondary_ip_ranges (MutableSequence[google.cloud.compute_v1.types.UsableSubnetworkSecondaryRange]):
            Secondary IP ranges.
        stack_type (str):
            The stack type for the subnet. If set to IPV4_ONLY, new VMs
            in the subnet are assigned IPv4 addresses only. If set to
            IPV4_IPV6, new VMs in the subnet can be assigned both IPv4
            and IPv6 addresses. If not specified, IPV4_ONLY is used.
            This field can be both set at resource creation time and
            updated using patch. Check the StackType enum for the list
            of possible values.

            This field is a member of `oneof`_ ``_stack_type``.
        subnetwork (str):
            Subnetwork URL.

            This field is a member of `oneof`_ ``_subnetwork``.
    """

    class Ipv6AccessType(proto.Enum):
        r"""The access type of IPv6 address this subnet holds. It's immutable
        and can only be specified during creation or the first time the
        subnet is updated into IPV4_IPV6 dual stack.

        Values:
            UNDEFINED_IPV6_ACCESS_TYPE (0):
                A value indicating that the enum field is not
                set.
            EXTERNAL (35607499):
                VMs on this subnet will be assigned IPv6
                addresses that are accessible via the Internet,
                as well as the VPC network.
            INTERNAL (279295677):
                VMs on this subnet will be assigned IPv6
                addresses that are only accessible over the VPC
                network.
        """
        UNDEFINED_IPV6_ACCESS_TYPE = 0
        EXTERNAL = 35607499
        INTERNAL = 279295677

    class Purpose(proto.Enum):
        r"""The purpose of the resource. This field can be either
        PRIVATE_RFC_1918 or INTERNAL_HTTPS_LOAD_BALANCER. A subnetwork with
        purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a user-created
        subnetwork that is reserved for Internal HTTP(S) Load Balancing. If
        unspecified, the purpose defaults to PRIVATE_RFC_1918. The
        enableFlowLogs field isn't supported with the purpose field set to
        INTERNAL_HTTPS_LOAD_BALANCER.

        Values:
            UNDEFINED_PURPOSE (0):
                A value indicating that the enum field is not
                set.
            INTERNAL_HTTPS_LOAD_BALANCER (248748889):
                Subnet reserved for Internal HTTP(S) Load
                Balancing.
            PRIVATE (403485027):
                Regular user created or automatically created
                subnet.
            PRIVATE_RFC_1918 (254902107):
                Regular user created or automatically created
                subnet.
            PRIVATE_SERVICE_CONNECT (48134724):
                Subnetworks created for Private Service
                Connect in the producer network.
            REGIONAL_MANAGED_PROXY (153049966):
                Subnetwork used for Regional
                Internal/External HTTP(S) Load Balancing.
        """
        UNDEFINED_PURPOSE = 0
        INTERNAL_HTTPS_LOAD_BALANCER = 248748889
        PRIVATE = 403485027
        PRIVATE_RFC_1918 = 254902107
        PRIVATE_SERVICE_CONNECT = 48134724
        REGIONAL_MANAGED_PROXY = 153049966

    class Role(proto.Enum):
        r"""The role of subnetwork. Currently, this field is only used when
        purpose = INTERNAL_HTTPS_LOAD_BALANCER. The value can be set to
        ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently
        being used for Internal HTTP(S) Load Balancing. A BACKUP subnetwork
        is one that is ready to be promoted to ACTIVE or is currently
        draining. This field can be updated with a patch request.

        Values:
            UNDEFINED_ROLE (0):
                A value indicating that the enum field is not
                set.
            ACTIVE (314733318):
                The ACTIVE subnet that is currently used.
            BACKUP (341010882):
                The BACKUP subnet that could be promoted to
                ACTIVE.
        """
        UNDEFINED_ROLE = 0
        ACTIVE = 314733318
        BACKUP = 341010882

    class StackType(proto.Enum):
        r"""The stack type for the subnet. If set to IPV4_ONLY, new VMs in the
        subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new
        VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If
        not specified, IPV4_ONLY is used. This field can be both set at
        resource creation time and updated using patch.

        Values:
            UNDEFINED_STACK_TYPE (0):
                A value indicating that the enum field is not
                set.
            IPV4_IPV6 (22197249):
                New VMs in this subnet can have both IPv4 and
                IPv6 addresses.
            IPV4_ONLY (22373798):
                New VMs in this subnet will only be assigned
                IPv4 addresses.
        """
        UNDEFINED_STACK_TYPE = 0
        IPV4_IPV6 = 22197249
        IPV4_ONLY = 22373798

    external_ipv6_prefix: str = proto.Field(
        proto.STRING,
        number=139299190,
        optional=True,
    )
    internal_ipv6_prefix: str = proto.Field(
        proto.STRING,
        number=506270056,
        optional=True,
    )
    ip_cidr_range: str = proto.Field(
        proto.STRING,
        number=98117322,
        optional=True,
    )
    ipv6_access_type: str = proto.Field(
        proto.STRING,
        number=504658653,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    purpose: str = proto.Field(
        proto.STRING,
        number=316407070,
        optional=True,
    )
    role: str = proto.Field(
        proto.STRING,
        number=3506294,
        optional=True,
    )
    secondary_ip_ranges: MutableSequence[
        "UsableSubnetworkSecondaryRange"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=136658915,
        message="UsableSubnetworkSecondaryRange",
    )
    stack_type: str = proto.Field(
        proto.STRING,
        number=425908881,
        optional=True,
    )
    subnetwork: str = proto.Field(
        proto.STRING,
        number=307827694,
        optional=True,
    )


class UsableSubnetworkSecondaryRange(proto.Message):
    r"""Secondary IP range of a usable subnetwork.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        ip_cidr_range (str):
            The range of IP addresses belonging to this
            subnetwork secondary range.

            This field is a member of `oneof`_ ``_ip_cidr_range``.
        range_name (str):
            The name associated with this subnetwork
            secondary range, used when adding an alias IP
            range to a VM instance. The name must be 1-63
            characters long, and comply with RFC1035. The
            name must be unique within the subnetwork.

            This field is a member of `oneof`_ ``_range_name``.
    """

    ip_cidr_range: str = proto.Field(
        proto.STRING,
        number=98117322,
        optional=True,
    )
    range_name: str = proto.Field(
        proto.STRING,
        number=332216397,
        optional=True,
    )


class UsableSubnetworksAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.UsableSubnetwork]):
            [Output] A list of usable subnetwork URLs.
        kind (str):
            [Output Only] Type of resource. Always
            compute#usableSubnetworksAggregatedList for aggregated lists
            of usable subnetworks.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results. In special cases
            listUsable may return 0 subnetworks and nextPageToken which
            still should be used to get the next page of results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["UsableSubnetwork"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="UsableSubnetwork",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class UsageExportLocation(proto.Message):
    r"""The location in Cloud Storage and naming method of the daily usage
    report. Contains bucket_name and report_name prefix.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bucket_name (str):
            The name of an existing bucket in Cloud
            Storage where the usage report object is stored.
            The Google Service Account is granted write
            access to this bucket. This can either be the
            bucket name by itself, such as example-bucket,
            or the bucket name with gs:// or
            https://storage.googleapis.com/ in front of it,
            such as gs://example-bucket.

            This field is a member of `oneof`_ ``_bucket_name``.
        report_name_prefix (str):
            An optional prefix for the name of the usage report object
            stored in bucketName. If not supplied, defaults to
            usage_gce. The report is stored as a CSV file named
            report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the
            day of the usage according to Pacific Time. If you supply a
            prefix, it should conform to Cloud Storage object naming
            conventions.

            This field is a member of `oneof`_ ``_report_name_prefix``.
    """

    bucket_name: str = proto.Field(
        proto.STRING,
        number=283610048,
        optional=True,
    )
    report_name_prefix: str = proto.Field(
        proto.STRING,
        number=320198715,
        optional=True,
    )


class ValidateRegionUrlMapRequest(proto.Message):
    r"""A request message for RegionUrlMaps.Validate. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        region (str):
            Name of the region scoping this request.
        region_url_maps_validate_request_resource (google.cloud.compute_v1.types.RegionUrlMapsValidateRequest):
            The body resource for this request
        url_map (str):
            Name of the UrlMap resource to be validated
            as.
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )
    region_url_maps_validate_request_resource: "RegionUrlMapsValidateRequest" = (
        proto.Field(
            proto.MESSAGE,
            number=56632858,
            message="RegionUrlMapsValidateRequest",
        )
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )


class ValidateUrlMapRequest(proto.Message):
    r"""A request message for UrlMaps.Validate. See the method
    description for details.

    Attributes:
        project (str):
            Project ID for this request.
        url_map (str):
            Name of the UrlMap resource to be validated
            as.
        url_maps_validate_request_resource (google.cloud.compute_v1.types.UrlMapsValidateRequest):
            The body resource for this request
    """

    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    url_map: str = proto.Field(
        proto.STRING,
        number=367020684,
    )
    url_maps_validate_request_resource: "UrlMapsValidateRequest" = proto.Field(
        proto.MESSAGE,
        number=395913455,
        message="UrlMapsValidateRequest",
    )


class VmEndpointNatMappings(proto.Message):
    r"""Contain information of Nat mapping for a VM endpoint (i.e.,
    NIC).


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        instance_name (str):
            Name of the VM instance which the endpoint
            belongs to

            This field is a member of `oneof`_ ``_instance_name``.
        interface_nat_mappings (MutableSequence[google.cloud.compute_v1.types.VmEndpointNatMappingsInterfaceNatMappings]):

    """

    instance_name: str = proto.Field(
        proto.STRING,
        number=227947509,
        optional=True,
    )
    interface_nat_mappings: MutableSequence[
        "VmEndpointNatMappingsInterfaceNatMappings"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=256196617,
        message="VmEndpointNatMappingsInterfaceNatMappings",
    )


class VmEndpointNatMappingsInterfaceNatMappings(proto.Message):
    r"""Contain information of Nat mapping for an interface of this
    endpoint.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        drain_nat_ip_port_ranges (MutableSequence[str]):
            List of all drain IP:port-range mappings assigned to this
            interface. These ranges are inclusive, that is, both the
            first and the last ports can be used for NAT. Example:
            ["2.2.2.2:12345-12355", "1.1.1.1:2234-2234"].
        nat_ip_port_ranges (MutableSequence[str]):
            A list of all IP:port-range mappings assigned to this
            interface. These ranges are inclusive, that is, both the
            first and the last ports can be used for NAT. Example:
            ["2.2.2.2:12345-12355", "1.1.1.1:2234-2234"].
        num_total_drain_nat_ports (int):
            Total number of drain ports across all NAT IPs allocated to
            this interface. It equals to the aggregated port number in
            the field drain_nat_ip_port_ranges.

            This field is a member of `oneof`_ ``_num_total_drain_nat_ports``.
        num_total_nat_ports (int):
            Total number of ports across all NAT IPs allocated to this
            interface. It equals to the aggregated port number in the
            field nat_ip_port_ranges.

            This field is a member of `oneof`_ ``_num_total_nat_ports``.
        rule_mappings (MutableSequence[google.cloud.compute_v1.types.VmEndpointNatMappingsInterfaceNatMappingsNatRuleMappings]):
            Information about mappings provided by rules
            in this NAT.
        source_alias_ip_range (str):
            Alias IP range for this interface endpoint.
            It will be a private (RFC 1918) IP range.
            Examples: "10.33.4.55/32", or "192.168.5.0/24".

            This field is a member of `oneof`_ ``_source_alias_ip_range``.
        source_virtual_ip (str):
            Primary IP of the VM for this NIC.

            This field is a member of `oneof`_ ``_source_virtual_ip``.
    """

    drain_nat_ip_port_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=395440577,
    )
    nat_ip_port_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=531830810,
    )
    num_total_drain_nat_ports: int = proto.Field(
        proto.INT32,
        number=335532793,
        optional=True,
    )
    num_total_nat_ports: int = proto.Field(
        proto.INT32,
        number=299904384,
        optional=True,
    )
    rule_mappings: MutableSequence[
        "VmEndpointNatMappingsInterfaceNatMappingsNatRuleMappings"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=486192968,
        message="VmEndpointNatMappingsInterfaceNatMappingsNatRuleMappings",
    )
    source_alias_ip_range: str = proto.Field(
        proto.STRING,
        number=440340952,
        optional=True,
    )
    source_virtual_ip: str = proto.Field(
        proto.STRING,
        number=149836159,
        optional=True,
    )


class VmEndpointNatMappingsInterfaceNatMappingsNatRuleMappings(proto.Message):
    r"""Contains information of NAT Mappings provided by a NAT Rule.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        drain_nat_ip_port_ranges (MutableSequence[str]):
            List of all drain IP:port-range mappings assigned to this
            interface by this rule. These ranges are inclusive, that is,
            both the first and the last ports can be used for NAT.
            Example: ["2.2.2.2:12345-12355", "1.1.1.1:2234-2234"].
        nat_ip_port_ranges (MutableSequence[str]):
            A list of all IP:port-range mappings assigned to this
            interface by this rule. These ranges are inclusive, that is,
            both the first and the last ports can be used for NAT.
            Example: ["2.2.2.2:12345-12355", "1.1.1.1:2234-2234"].
        num_total_drain_nat_ports (int):
            Total number of drain ports across all NAT IPs allocated to
            this interface by this rule. It equals the aggregated port
            number in the field drain_nat_ip_port_ranges.

            This field is a member of `oneof`_ ``_num_total_drain_nat_ports``.
        num_total_nat_ports (int):
            Total number of ports across all NAT IPs allocated to this
            interface by this rule. It equals the aggregated port number
            in the field nat_ip_port_ranges.

            This field is a member of `oneof`_ ``_num_total_nat_ports``.
        rule_number (int):
            Rule number of the NAT Rule.

            This field is a member of `oneof`_ ``_rule_number``.
    """

    drain_nat_ip_port_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=395440577,
    )
    nat_ip_port_ranges: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=531830810,
    )
    num_total_drain_nat_ports: int = proto.Field(
        proto.INT32,
        number=335532793,
        optional=True,
    )
    num_total_nat_ports: int = proto.Field(
        proto.INT32,
        number=299904384,
        optional=True,
    )
    rule_number: int = proto.Field(
        proto.INT32,
        number=535211500,
        optional=True,
    )


class VmEndpointNatMappingsList(proto.Message):
    r"""Contains a list of VmEndpointNatMappings.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of resource. Always
            compute#vmEndpointNatMappingsList for lists of Nat mappings
            of VM endpoints.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        result (MutableSequence[google.cloud.compute_v1.types.VmEndpointNatMappings]):
            [Output Only] A list of Nat mapping information of VM
            endpoints.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    result: MutableSequence["VmEndpointNatMappings"] = proto.RepeatedField(
        proto.MESSAGE,
        number=139315229,
        message="VmEndpointNatMappings",
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class VpnGateway(proto.Message):
    r"""Represents a HA VPN gateway. HA VPN is a high-availability
    (HA) Cloud VPN solution that lets you securely connect your
    on-premises network to your Google Cloud Virtual Private Cloud
    network through an IPsec VPN connection in a single region. For
    more information about Cloud HA VPN solutions, see Cloud VPN
    topologies .


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of resource. Always compute#vpnGateway
            for VPN gateways.

            This field is a member of `oneof`_ ``_kind``.
        label_fingerprint (str):
            A fingerprint for the labels being applied to
            this VpnGateway, which is essentially a hash of
            the labels set used for optimistic locking. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update labels. You must always provide an
            up-to-date fingerprint hash in order to update
            or change labels, otherwise the request will
            fail with error 412 conditionNotMet. To see the
            latest fingerprint, make a get() request to
            retrieve a VpnGateway.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            Labels for this resource. These can only be
            added or modified by the setLabels method. Each
            label key/value pair must comply with RFC1035.
            Label values may be empty.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        network (str):
            URL of the network to which this VPN gateway
            is attached. Provided by the client when the VPN
            gateway is created.

            This field is a member of `oneof`_ ``_network``.
        region (str):
            [Output Only] URL of the region where the VPN gateway
            resides.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        stack_type (str):
            The stack type for this VPN gateway to identify the IP
            protocols that are enabled. Possible values are: IPV4_ONLY,
            IPV4_IPV6. If not specified, IPV4_ONLY will be used. Check
            the StackType enum for the list of possible values.

            This field is a member of `oneof`_ ``_stack_type``.
        vpn_interfaces (MutableSequence[google.cloud.compute_v1.types.VpnGatewayVpnGatewayInterface]):
            The list of VPN interfaces associated with
            this VPN gateway.
    """

    class StackType(proto.Enum):
        r"""The stack type for this VPN gateway to identify the IP protocols
        that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not
        specified, IPV4_ONLY will be used.

        Values:
            UNDEFINED_STACK_TYPE (0):
                A value indicating that the enum field is not
                set.
            IPV4_IPV6 (22197249):
                Enable VPN gateway with both IPv4 and IPv6
                protocols.
            IPV4_ONLY (22373798):
                Enable VPN gateway with only IPv4 protocol.
        """
        UNDEFINED_STACK_TYPE = 0
        IPV4_IPV6 = 22197249
        IPV4_ONLY = 22373798

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    network: str = proto.Field(
        proto.STRING,
        number=232872494,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    stack_type: str = proto.Field(
        proto.STRING,
        number=425908881,
        optional=True,
    )
    vpn_interfaces: MutableSequence[
        "VpnGatewayVpnGatewayInterface"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=91842181,
        message="VpnGatewayVpnGatewayInterface",
    )


class VpnGatewayAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.VpnGatewaysScopedList]):
            A list of VpnGateway resources.
        kind (str):
            [Output Only] Type of resource. Always compute#vpnGateway
            for VPN gateways.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "VpnGatewaysScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="VpnGatewaysScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class VpnGatewayList(proto.Message):
    r"""Contains a list of VpnGateway resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.VpnGateway]):
            A list of VpnGateway resources.
        kind (str):
            [Output Only] Type of resource. Always compute#vpnGateway
            for VPN gateways.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["VpnGateway"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="VpnGateway",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class VpnGatewayStatus(proto.Message):
    r"""

    Attributes:
        vpn_connections (MutableSequence[google.cloud.compute_v1.types.VpnGatewayStatusVpnConnection]):
            List of VPN connection for this VpnGateway.
    """

    vpn_connections: MutableSequence[
        "VpnGatewayStatusVpnConnection"
    ] = proto.RepeatedField(
        proto.MESSAGE,
        number=439334538,
        message="VpnGatewayStatusVpnConnection",
    )


class VpnGatewayStatusHighAvailabilityRequirementState(proto.Message):
    r"""Describes the high availability requirement state for the VPN
    connection between this Cloud VPN gateway and a peer gateway.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        state (str):
            Indicates the high availability requirement state for the
            VPN connection. Valid values are CONNECTION_REDUNDANCY_MET,
            CONNECTION_REDUNDANCY_NOT_MET. Check the State enum for the
            list of possible values.

            This field is a member of `oneof`_ ``_state``.
        unsatisfied_reason (str):
            Indicates the reason why the VPN connection does not meet
            the high availability redundancy criteria/requirement. Valid
            values is INCOMPLETE_TUNNELS_COVERAGE. Check the
            UnsatisfiedReason enum for the list of possible values.

            This field is a member of `oneof`_ ``_unsatisfied_reason``.
    """

    class State(proto.Enum):
        r"""Indicates the high availability requirement state for the VPN
        connection. Valid values are CONNECTION_REDUNDANCY_MET,
        CONNECTION_REDUNDANCY_NOT_MET.

        Values:
            UNDEFINED_STATE (0):
                A value indicating that the enum field is not
                set.
            CONNECTION_REDUNDANCY_MET (505242907):
                VPN tunnels are configured with adequate
                redundancy from Cloud VPN gateway to the peer
                VPN gateway. For both GCP-to-non-GCP and
                GCP-to-GCP connections, the adequate redundancy
                is a pre-requirement for users to get 99.99%
                availability on GCP side; please note that for
                any connection, end-to-end 99.99% availability
                is subject to proper configuration on the peer
                VPN gateway.
            CONNECTION_REDUNDANCY_NOT_MET (511863311):
                VPN tunnels are not configured with adequate
                redundancy from the Cloud VPN gateway to the
                peer gateway
        """
        UNDEFINED_STATE = 0
        CONNECTION_REDUNDANCY_MET = 505242907
        CONNECTION_REDUNDANCY_NOT_MET = 511863311

    class UnsatisfiedReason(proto.Enum):
        r"""Indicates the reason why the VPN connection does not meet the high
        availability redundancy criteria/requirement. Valid values is
        INCOMPLETE_TUNNELS_COVERAGE.

        Values:
            UNDEFINED_UNSATISFIED_REASON (0):
                A value indicating that the enum field is not
                set.
            INCOMPLETE_TUNNELS_COVERAGE (55917437):
                No description available.
        """
        UNDEFINED_UNSATISFIED_REASON = 0
        INCOMPLETE_TUNNELS_COVERAGE = 55917437

    state: str = proto.Field(
        proto.STRING,
        number=109757585,
        optional=True,
    )
    unsatisfied_reason: str = proto.Field(
        proto.STRING,
        number=55016330,
        optional=True,
    )


class VpnGatewayStatusTunnel(proto.Message):
    r"""Contains some information about a VPN tunnel.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        local_gateway_interface (int):
            The VPN gateway interface this VPN tunnel is
            associated with.

            This field is a member of `oneof`_ ``_local_gateway_interface``.
        peer_gateway_interface (int):
            The peer gateway interface this VPN tunnel is
            connected to, the peer gateway could either be
            an external VPN gateway or GCP VPN gateway.

            This field is a member of `oneof`_ ``_peer_gateway_interface``.
        tunnel_url (str):
            URL reference to the VPN tunnel.

            This field is a member of `oneof`_ ``_tunnel_url``.
    """

    local_gateway_interface: int = proto.Field(
        proto.UINT32,
        number=158764330,
        optional=True,
    )
    peer_gateway_interface: int = proto.Field(
        proto.UINT32,
        number=214380385,
        optional=True,
    )
    tunnel_url: str = proto.Field(
        proto.STRING,
        number=78975256,
        optional=True,
    )


class VpnGatewayStatusVpnConnection(proto.Message):
    r"""A VPN connection contains all VPN tunnels connected from this
    VpnGateway to the same peer gateway. The peer gateway could
    either be a external VPN gateway or GCP VPN gateway.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        peer_external_gateway (str):
            URL reference to the peer external VPN gateways to which the
            VPN tunnels in this VPN connection are connected. This field
            is mutually exclusive with peer_gcp_gateway.

            This field is a member of `oneof`_ ``_peer_external_gateway``.
        peer_gcp_gateway (str):
            URL reference to the peer side VPN gateways to which the VPN
            tunnels in this VPN connection are connected. This field is
            mutually exclusive with peer_gcp_gateway.

            This field is a member of `oneof`_ ``_peer_gcp_gateway``.
        state (google.cloud.compute_v1.types.VpnGatewayStatusHighAvailabilityRequirementState):
            HighAvailabilityRequirementState for the VPN
            connection.

            This field is a member of `oneof`_ ``_state``.
        tunnels (MutableSequence[google.cloud.compute_v1.types.VpnGatewayStatusTunnel]):
            List of VPN tunnels that are in this VPN
            connection.
    """

    peer_external_gateway: str = proto.Field(
        proto.STRING,
        number=384956173,
        optional=True,
    )
    peer_gcp_gateway: str = proto.Field(
        proto.STRING,
        number=281867452,
        optional=True,
    )
    state: "VpnGatewayStatusHighAvailabilityRequirementState" = proto.Field(
        proto.MESSAGE,
        number=109757585,
        optional=True,
        message="VpnGatewayStatusHighAvailabilityRequirementState",
    )
    tunnels: MutableSequence["VpnGatewayStatusTunnel"] = proto.RepeatedField(
        proto.MESSAGE,
        number=104561931,
        message="VpnGatewayStatusTunnel",
    )


class VpnGatewayVpnGatewayInterface(proto.Message):
    r"""A VPN gateway interface.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (int):
            [Output Only] Numeric identifier for this VPN interface
            associated with the VPN gateway.

            This field is a member of `oneof`_ ``_id``.
        interconnect_attachment (str):
            URL of the VLAN attachment
            (interconnectAttachment) resource for this VPN
            gateway interface. When the value of this field
            is present, the VPN gateway is used for HA VPN
            over Cloud Interconnect; all egress or ingress
            traffic for this VPN gateway interface goes
            through the specified VLAN attachment resource.

            This field is a member of `oneof`_ ``_interconnect_attachment``.
        ip_address (str):
            [Output Only] IP address for this VPN interface associated
            with the VPN gateway. The IP address could be either a
            regional external IP address or a regional internal IP
            address. The two IP addresses for a VPN gateway must be all
            regional external or regional internal IP addresses. There
            cannot be a mix of regional external IP addresses and
            regional internal IP addresses. For HA VPN over Cloud
            Interconnect, the IP addresses for both interfaces could
            either be regional internal IP addresses or regional
            external IP addresses. For regular (non HA VPN over Cloud
            Interconnect) HA VPN tunnels, the IP address must be a
            regional external IP address.

            This field is a member of `oneof`_ ``_ip_address``.
    """

    id: int = proto.Field(
        proto.UINT32,
        number=3355,
        optional=True,
    )
    interconnect_attachment: str = proto.Field(
        proto.STRING,
        number=308135284,
        optional=True,
    )
    ip_address: str = proto.Field(
        proto.STRING,
        number=406272220,
        optional=True,
    )


class VpnGatewaysGetStatusResponse(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        result (google.cloud.compute_v1.types.VpnGatewayStatus):

            This field is a member of `oneof`_ ``_result``.
    """

    result: "VpnGatewayStatus" = proto.Field(
        proto.MESSAGE,
        number=139315229,
        optional=True,
        message="VpnGatewayStatus",
    )


class VpnGatewaysScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        vpn_gateways (MutableSequence[google.cloud.compute_v1.types.VpnGateway]):
            [Output Only] A list of VPN gateways contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning which replaces the list
            of addresses when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    vpn_gateways: MutableSequence["VpnGateway"] = proto.RepeatedField(
        proto.MESSAGE,
        number=259177882,
        message="VpnGateway",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class VpnTunnel(proto.Message):
    r"""Represents a Cloud VPN Tunnel resource. For more information
    about VPN, read the the Cloud VPN Overview.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        description (str):
            An optional description of this resource.
            Provide this property when you create the
            resource.

            This field is a member of `oneof`_ ``_description``.
        detailed_status (str):
            [Output Only] Detailed status message for the VPN tunnel.

            This field is a member of `oneof`_ ``_detailed_status``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        ike_version (int):
            IKE protocol version to use when establishing
            the VPN tunnel with the peer VPN gateway.
            Acceptable IKE versions are 1 or 2. The default
            version is 2.

            This field is a member of `oneof`_ ``_ike_version``.
        kind (str):
            [Output Only] Type of resource. Always compute#vpnTunnel for
            VPN tunnels.

            This field is a member of `oneof`_ ``_kind``.
        local_traffic_selector (MutableSequence[str]):
            Local traffic selector to use when
            establishing the VPN tunnel with the peer VPN
            gateway. The value should be a CIDR formatted
            string, for example: 192.168.0.0/16. The ranges
            must be disjoint. Only IPv4 is supported.
        name (str):
            Name of the resource. Provided by the client when the
            resource is created. The name must be 1-63 characters long,
            and comply with RFC1035. Specifically, the name must be 1-63
            characters long and match the regular expression
            ``[a-z]([-a-z0-9]*[a-z0-9])?`` which means the first
            character must be a lowercase letter, and all following
            characters must be a dash, lowercase letter, or digit,
            except the last character, which cannot be a dash.

            This field is a member of `oneof`_ ``_name``.
        peer_external_gateway (str):
            URL of the peer side external VPN gateway to
            which this VPN tunnel is connected. Provided by
            the client when the VPN tunnel is created. This
            field is exclusive with the field
            peerGcpGateway.

            This field is a member of `oneof`_ ``_peer_external_gateway``.
        peer_external_gateway_interface (int):
            The interface ID of the external VPN gateway to which this
            VPN tunnel is connected. Provided by the client when the VPN
            tunnel is created. Possible values are: ``0``, ``1``, ``2``,
            ``3``. The number of IDs in use depends on the external VPN
            gateway redundancy type.

            This field is a member of `oneof`_ ``_peer_external_gateway_interface``.
        peer_gcp_gateway (str):
            URL of the peer side HA GCP VPN gateway to
            which this VPN tunnel is connected. Provided by
            the client when the VPN tunnel is created. This
            field can be used when creating highly available
            VPN from VPC network to VPC network, the field
            is exclusive with the field peerExternalGateway.
            If provided, the VPN tunnel will automatically
            use the same vpnGatewayInterface ID in the peer
            GCP VPN gateway.

            This field is a member of `oneof`_ ``_peer_gcp_gateway``.
        peer_ip (str):
            IP address of the peer VPN gateway. Only IPv4
            is supported.

            This field is a member of `oneof`_ ``_peer_ip``.
        region (str):
            [Output Only] URL of the region where the VPN tunnel
            resides. You must specify this field as part of the HTTP
            request URL. It is not settable as a field in the request
            body.

            This field is a member of `oneof`_ ``_region``.
        remote_traffic_selector (MutableSequence[str]):
            Remote traffic selectors to use when
            establishing the VPN tunnel with the peer VPN
            gateway. The value should be a CIDR formatted
            string, for example: 192.168.0.0/16. The ranges
            should be disjoint. Only IPv4 is supported.
        router (str):
            URL of the router resource to be used for
            dynamic routing.

            This field is a member of `oneof`_ ``_router``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        shared_secret (str):
            Shared secret used to set the secure session
            between the Cloud VPN gateway and the peer VPN
            gateway.

            This field is a member of `oneof`_ ``_shared_secret``.
        shared_secret_hash (str):
            Hash of the shared secret.

            This field is a member of `oneof`_ ``_shared_secret_hash``.
        status (str):
            [Output Only] The status of the VPN tunnel, which can be one
            of the following: - PROVISIONING: Resource is being
            allocated for the VPN tunnel. - WAITING_FOR_FULL_CONFIG:
            Waiting to receive all VPN-related configs from the user.
            Network, TargetVpnGateway, VpnTunnel, ForwardingRule, and
            Route resources are needed to setup the VPN tunnel. -
            FIRST_HANDSHAKE: Successful first handshake with the peer
            VPN. - ESTABLISHED: Secure session is successfully
            established with the peer VPN. - NETWORK_ERROR: Deprecated,
            replaced by NO_INCOMING_PACKETS - AUTHORIZATION_ERROR: Auth
            error (for example, bad shared secret). -
            NEGOTIATION_FAILURE: Handshake failed. - DEPROVISIONING:
            Resources are being deallocated for the VPN tunnel. -
            FAILED: Tunnel creation has failed and the tunnel is not
            ready to be used. - NO_INCOMING_PACKETS: No incoming packets
            from peer. - REJECTED: Tunnel configuration was rejected,
            can be result of being denied access. -
            ALLOCATING_RESOURCES: Cloud VPN is in the process of
            allocating all required resources. - STOPPED: Tunnel is
            stopped due to its Forwarding Rules being deleted for
            Classic VPN tunnels or the project is in frozen state. -
            PEER_IDENTITY_MISMATCH: Peer identity does not match peer
            IP, probably behind NAT. - TS_NARROWING_NOT_ALLOWED: Traffic
            selector narrowing not allowed for an HA-VPN tunnel. Check
            the Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        target_vpn_gateway (str):
            URL of the Target VPN gateway with which this
            VPN tunnel is associated. Provided by the client
            when the VPN tunnel is created.

            This field is a member of `oneof`_ ``_target_vpn_gateway``.
        vpn_gateway (str):
            URL of the VPN gateway with which this VPN tunnel is
            associated. Provided by the client when the VPN tunnel is
            created. This must be used (instead of target_vpn_gateway)
            if a High Availability VPN gateway resource is created.

            This field is a member of `oneof`_ ``_vpn_gateway``.
        vpn_gateway_interface (int):
            The interface ID of the VPN gateway with which this VPN
            tunnel is associated. Possible values are: ``0``, ``1``.

            This field is a member of `oneof`_ ``_vpn_gateway_interface``.
    """

    class Status(proto.Enum):
        r"""[Output Only] The status of the VPN tunnel, which can be one of the
        following: - PROVISIONING: Resource is being allocated for the VPN
        tunnel. - WAITING_FOR_FULL_CONFIG: Waiting to receive all
        VPN-related configs from the user. Network, TargetVpnGateway,
        VpnTunnel, ForwardingRule, and Route resources are needed to setup
        the VPN tunnel. - FIRST_HANDSHAKE: Successful first handshake with
        the peer VPN. - ESTABLISHED: Secure session is successfully
        established with the peer VPN. - NETWORK_ERROR: Deprecated, replaced
        by NO_INCOMING_PACKETS - AUTHORIZATION_ERROR: Auth error (for
        example, bad shared secret). - NEGOTIATION_FAILURE: Handshake
        failed. - DEPROVISIONING: Resources are being deallocated for the
        VPN tunnel. - FAILED: Tunnel creation has failed and the tunnel is
        not ready to be used. - NO_INCOMING_PACKETS: No incoming packets
        from peer. - REJECTED: Tunnel configuration was rejected, can be
        result of being denied access. - ALLOCATING_RESOURCES: Cloud VPN is
        in the process of allocating all required resources. - STOPPED:
        Tunnel is stopped due to its Forwarding Rules being deleted for
        Classic VPN tunnels or the project is in frozen state. -
        PEER_IDENTITY_MISMATCH: Peer identity does not match peer IP,
        probably behind NAT. - TS_NARROWING_NOT_ALLOWED: Traffic selector
        narrowing not allowed for an HA-VPN tunnel.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            ALLOCATING_RESOURCES (320922816):
                Cloud VPN is in the process of allocating all
                required resources (specifically, a borg task).
            AUTHORIZATION_ERROR (23580290):
                Auth error (e.g. bad shared secret).
            DEPROVISIONING (428935662):
                Resources is being deallocated for the VPN
                tunnel.
            ESTABLISHED (88852344):
                Secure session is successfully established
                with peer VPN.
            FAILED (455706685):
                Tunnel creation has failed and the tunnel is
                not ready to be used.
            FIRST_HANDSHAKE (191393000):
                Successful first handshake with peer VPN.
            NEGOTIATION_FAILURE (360325868):
                Handshake failed.
            NETWORK_ERROR (193912951):
                Deprecated, replaced by NO_INCOMING_PACKETS
            NO_INCOMING_PACKETS (119983216):
                No incoming packets from peer
            PROVISIONING (290896621):
                Resource is being allocated for the VPN
                tunnel.
            REJECTED (174130302):
                Tunnel configuration was rejected, can be
                result of being denylisted.
            STOPPED (444276141):
                Tunnel is stopped due to its Forwarding Rules
                being deleted.
            WAITING_FOR_FULL_CONFIG (41640522):
                Waiting to receive all VPN-related configs
                from user. Network, TargetVpnGateway, VpnTunnel,
                ForwardingRule and Route resources are needed to
                setup VPN tunnel.
        """
        UNDEFINED_STATUS = 0
        ALLOCATING_RESOURCES = 320922816
        AUTHORIZATION_ERROR = 23580290
        DEPROVISIONING = 428935662
        ESTABLISHED = 88852344
        FAILED = 455706685
        FIRST_HANDSHAKE = 191393000
        NEGOTIATION_FAILURE = 360325868
        NETWORK_ERROR = 193912951
        NO_INCOMING_PACKETS = 119983216
        PROVISIONING = 290896621
        REJECTED = 174130302
        STOPPED = 444276141
        WAITING_FOR_FULL_CONFIG = 41640522

    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    detailed_status: str = proto.Field(
        proto.STRING,
        number=333501025,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    ike_version: int = proto.Field(
        proto.INT32,
        number=218376220,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    local_traffic_selector: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=317314613,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    peer_external_gateway: str = proto.Field(
        proto.STRING,
        number=384956173,
        optional=True,
    )
    peer_external_gateway_interface: int = proto.Field(
        proto.INT32,
        number=452768391,
        optional=True,
    )
    peer_gcp_gateway: str = proto.Field(
        proto.STRING,
        number=281867452,
        optional=True,
    )
    peer_ip: str = proto.Field(
        proto.STRING,
        number=383249700,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    remote_traffic_selector: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=358887098,
    )
    router: str = proto.Field(
        proto.STRING,
        number=148608841,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    shared_secret: str = proto.Field(
        proto.STRING,
        number=381932490,
        optional=True,
    )
    shared_secret_hash: str = proto.Field(
        proto.STRING,
        number=398881891,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    target_vpn_gateway: str = proto.Field(
        proto.STRING,
        number=532512843,
        optional=True,
    )
    vpn_gateway: str = proto.Field(
        proto.STRING,
        number=406684153,
        optional=True,
    )
    vpn_gateway_interface: int = proto.Field(
        proto.INT32,
        number=95979123,
        optional=True,
    )


class VpnTunnelAggregatedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableMapping[str, google.cloud.compute_v1.types.VpnTunnelsScopedList]):
            A list of VpnTunnelsScopedList resources.
        kind (str):
            [Output Only] Type of resource. Always compute#vpnTunnel for
            VPN tunnels.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        unreachables (MutableSequence[str]):
            [Output Only] Unreachable resources.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableMapping[str, "VpnTunnelsScopedList"] = proto.MapField(
        proto.STRING,
        proto.MESSAGE,
        number=100526016,
        message="VpnTunnelsScopedList",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    unreachables: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=243372063,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class VpnTunnelList(proto.Message):
    r"""Contains a list of VpnTunnel resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.VpnTunnel]):
            A list of VpnTunnel resources.
        kind (str):
            [Output Only] Type of resource. Always compute#vpnTunnel for
            VPN tunnels.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["VpnTunnel"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="VpnTunnel",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class VpnTunnelsScopedList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        vpn_tunnels (MutableSequence[google.cloud.compute_v1.types.VpnTunnel]):
            A list of VPN tunnels contained in this
            scope.
        warning (google.cloud.compute_v1.types.Warning):
            Informational warning which replaces the list
            of addresses when the list is empty.

            This field is a member of `oneof`_ ``_warning``.
    """

    vpn_tunnels: MutableSequence["VpnTunnel"] = proto.RepeatedField(
        proto.MESSAGE,
        number=163494080,
        message="VpnTunnel",
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class WafExpressionSet(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        aliases (MutableSequence[str]):
            A list of alternate IDs. The format should
            be: - E.g. XSS-stable Generic suffix like
            "stable" is particularly useful if a policy
            likes to avail newer set of expressions without
            having to change the policy. A given alias name
            can't be used for more than one entity set.
        expressions (MutableSequence[google.cloud.compute_v1.types.WafExpressionSetExpression]):
            List of available expressions.
        id (str):
            Google specified expression set ID. The
            format should be: - E.g. XSS-20170329 required

            This field is a member of `oneof`_ ``_id``.
    """

    aliases: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=159207166,
    )
    expressions: MutableSequence["WafExpressionSetExpression"] = proto.RepeatedField(
        proto.MESSAGE,
        number=175554779,
        message="WafExpressionSetExpression",
    )
    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )


class WafExpressionSetExpression(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            Expression ID should uniquely identify the
            origin of the expression. E.g.
            owasp-crs-v020901-id973337 identifies Owasp core
            rule set version 2.9.1 rule id 973337. The ID
            could be used to determine the individual attack
            definition that has been detected. It could also
            be used to exclude it from the policy in case of
            false positive. required

            This field is a member of `oneof`_ ``_id``.
        sensitivity (int):
            The sensitivity value associated with the WAF
            rule ID. This corresponds to the ModSecurity
            paranoia level, ranging from 1 to 4. 0 is
            reserved for opt-in only rules.

            This field is a member of `oneof`_ ``_sensitivity``.
    """

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    sensitivity: int = proto.Field(
        proto.INT32,
        number=27532959,
        optional=True,
    )


class WaitGlobalOperationRequest(proto.Message):
    r"""A request message for GlobalOperations.Wait. See the method
    description for details.

    Attributes:
        operation (str):
            Name of the Operations resource to return.
        project (str):
            Project ID for this request.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )


class WaitRegionOperationRequest(proto.Message):
    r"""A request message for RegionOperations.Wait. See the method
    description for details.

    Attributes:
        operation (str):
            Name of the Operations resource to return.
        project (str):
            Project ID for this request.
        region (str):
            Name of the region for this request.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
    )


class WaitZoneOperationRequest(proto.Message):
    r"""A request message for ZoneOperations.Wait. See the method
    description for details.

    Attributes:
        operation (str):
            Name of the Operations resource to return.
        project (str):
            Project ID for this request.
        zone (str):
            Name of the zone for this request.
    """

    operation: str = proto.Field(
        proto.STRING,
        number=52090215,
    )
    project: str = proto.Field(
        proto.STRING,
        number=227560217,
    )
    zone: str = proto.Field(
        proto.STRING,
        number=3744684,
    )


class Warning(proto.Message):
    r"""[Output Only] Informational warning message.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        code (str):
            [Output Only] A warning code, if applicable. For example,
            Compute Engine returns NO_RESULTS_ON_PAGE if there are no
            results in the response. Check the Code enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_code``.
        data (MutableSequence[google.cloud.compute_v1.types.Data]):
            [Output Only] Metadata about this warning in key: value
            format. For example: "data": [ { "key": "scope", "value":
            "zones/us-east1-d" }
        message (str):
            [Output Only] A human-readable description of the warning
            code.

            This field is a member of `oneof`_ ``_message``.
    """

    class Code(proto.Enum):
        r"""[Output Only] A warning code, if applicable. For example, Compute
        Engine returns NO_RESULTS_ON_PAGE if there are no results in the
        response.

        Values:
            UNDEFINED_CODE (0):
                A value indicating that the enum field is not
                set.
            CLEANUP_FAILED (150308440):
                Warning about failed cleanup of transient
                changes made by a failed operation.
            DEPRECATED_RESOURCE_USED (391835586):
                A link to a deprecated resource was created.
            DEPRECATED_TYPE_USED (346526230):
                When deploying and at least one of the
                resources has a type marked as deprecated
            DISK_SIZE_LARGER_THAN_IMAGE_SIZE (369442967):
                The user created a boot disk that is larger
                than image size.
            EXPERIMENTAL_TYPE_USED (451954443):
                When deploying and at least one of the
                resources has a type marked as experimental
            EXTERNAL_API_WARNING (175546307):
                Warning that is present in an external api
                call
            FIELD_VALUE_OVERRIDEN (329669423):
                Warning that value of a field has been
                overridden. Deprecated unused field.
            INJECTED_KERNELS_DEPRECATED (417377419):
                The operation involved use of an injected
                kernel, which is deprecated.
            INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB (401542606):
                A WEIGHTED_MAGLEV backend service is associated with a
                health check that is not of type HTTP/HTTPS/HTTP2.
            LARGE_DEPLOYMENT_WARNING (481440678):
                When deploying a deployment with a
                exceedingly large number of resources
            MISSING_TYPE_DEPENDENCY (344505463):
                A resource depends on a missing type
            NEXT_HOP_ADDRESS_NOT_ASSIGNED (324964999):
                The route's nextHopIp address is not assigned
                to an instance on the network.
            NEXT_HOP_CANNOT_IP_FORWARD (383382887):
                The route's next hop instance cannot ip
                forward.
            NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE (146748434):
                The route's nextHopInstance URL refers to an
                instance that does not have an ipv6 interface on
                the same network as the route.
            NEXT_HOP_INSTANCE_NOT_FOUND (464250446):
                The route's nextHopInstance URL refers to an
                instance that does not exist.
            NEXT_HOP_INSTANCE_NOT_ON_NETWORK (243758146):
                The route's nextHopInstance URL refers to an
                instance that is not on the same network as the
                route.
            NEXT_HOP_NOT_RUNNING (417081265):
                The route's next hop instance does not have a
                status of RUNNING.
            NOT_CRITICAL_ERROR (105763924):
                Error which is not critical. We decided to
                continue the process despite the mentioned
                error.
            NO_RESULTS_ON_PAGE (30036744):
                No results are present on a particular list
                page.
            PARTIAL_SUCCESS (39966469):
                Success is reported, but some results may be
                missing due to errors
            REQUIRED_TOS_AGREEMENT (3745539):
                The user attempted to use a resource that
                requires a TOS they have not accepted.
            RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING (496728641):
                Warning that a resource is in use.
            RESOURCE_NOT_DELETED (168598460):
                One or more of the resources set to
                auto-delete could not be deleted because they
                were in use.
            SCHEMA_VALIDATION_IGNORED (275245642):
                When a resource schema validation is ignored.
            SINGLE_INSTANCE_PROPERTY_TEMPLATE (268305617):
                Instance template used in instance group
                manager is valid as such, but its application
                does not make a lot of sense, because it allows
                only single instance in instance group.
            UNDECLARED_PROPERTIES (390513439):
                When undeclared properties in the schema are
                present
            UNREACHABLE (13328052):
                A given scope cannot be reached.
        """
        UNDEFINED_CODE = 0
        CLEANUP_FAILED = 150308440
        DEPRECATED_RESOURCE_USED = 391835586
        DEPRECATED_TYPE_USED = 346526230
        DISK_SIZE_LARGER_THAN_IMAGE_SIZE = 369442967
        EXPERIMENTAL_TYPE_USED = 451954443
        EXTERNAL_API_WARNING = 175546307
        FIELD_VALUE_OVERRIDEN = 329669423
        INJECTED_KERNELS_DEPRECATED = 417377419
        INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB = 401542606
        LARGE_DEPLOYMENT_WARNING = 481440678
        MISSING_TYPE_DEPENDENCY = 344505463
        NEXT_HOP_ADDRESS_NOT_ASSIGNED = 324964999
        NEXT_HOP_CANNOT_IP_FORWARD = 383382887
        NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE = 146748434
        NEXT_HOP_INSTANCE_NOT_FOUND = 464250446
        NEXT_HOP_INSTANCE_NOT_ON_NETWORK = 243758146
        NEXT_HOP_NOT_RUNNING = 417081265
        NOT_CRITICAL_ERROR = 105763924
        NO_RESULTS_ON_PAGE = 30036744
        PARTIAL_SUCCESS = 39966469
        REQUIRED_TOS_AGREEMENT = 3745539
        RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING = 496728641
        RESOURCE_NOT_DELETED = 168598460
        SCHEMA_VALIDATION_IGNORED = 275245642
        SINGLE_INSTANCE_PROPERTY_TEMPLATE = 268305617
        UNDECLARED_PROPERTIES = 390513439
        UNREACHABLE = 13328052

    code: str = proto.Field(
        proto.STRING,
        number=3059181,
        optional=True,
    )
    data: MutableSequence["Data"] = proto.RepeatedField(
        proto.MESSAGE,
        number=3076010,
        message="Data",
    )
    message: str = proto.Field(
        proto.STRING,
        number=418054151,
        optional=True,
    )


class Warnings(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        code (str):
            [Output Only] A warning code, if applicable. For example,
            Compute Engine returns NO_RESULTS_ON_PAGE if there are no
            results in the response. Check the Code enum for the list of
            possible values.

            This field is a member of `oneof`_ ``_code``.
        data (MutableSequence[google.cloud.compute_v1.types.Data]):
            [Output Only] Metadata about this warning in key: value
            format. For example: "data": [ { "key": "scope", "value":
            "zones/us-east1-d" }
        message (str):
            [Output Only] A human-readable description of the warning
            code.

            This field is a member of `oneof`_ ``_message``.
    """

    class Code(proto.Enum):
        r"""[Output Only] A warning code, if applicable. For example, Compute
        Engine returns NO_RESULTS_ON_PAGE if there are no results in the
        response.

        Values:
            UNDEFINED_CODE (0):
                A value indicating that the enum field is not
                set.
            CLEANUP_FAILED (150308440):
                Warning about failed cleanup of transient
                changes made by a failed operation.
            DEPRECATED_RESOURCE_USED (391835586):
                A link to a deprecated resource was created.
            DEPRECATED_TYPE_USED (346526230):
                When deploying and at least one of the
                resources has a type marked as deprecated
            DISK_SIZE_LARGER_THAN_IMAGE_SIZE (369442967):
                The user created a boot disk that is larger
                than image size.
            EXPERIMENTAL_TYPE_USED (451954443):
                When deploying and at least one of the
                resources has a type marked as experimental
            EXTERNAL_API_WARNING (175546307):
                Warning that is present in an external api
                call
            FIELD_VALUE_OVERRIDEN (329669423):
                Warning that value of a field has been
                overridden. Deprecated unused field.
            INJECTED_KERNELS_DEPRECATED (417377419):
                The operation involved use of an injected
                kernel, which is deprecated.
            INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB (401542606):
                A WEIGHTED_MAGLEV backend service is associated with a
                health check that is not of type HTTP/HTTPS/HTTP2.
            LARGE_DEPLOYMENT_WARNING (481440678):
                When deploying a deployment with a
                exceedingly large number of resources
            MISSING_TYPE_DEPENDENCY (344505463):
                A resource depends on a missing type
            NEXT_HOP_ADDRESS_NOT_ASSIGNED (324964999):
                The route's nextHopIp address is not assigned
                to an instance on the network.
            NEXT_HOP_CANNOT_IP_FORWARD (383382887):
                The route's next hop instance cannot ip
                forward.
            NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE (146748434):
                The route's nextHopInstance URL refers to an
                instance that does not have an ipv6 interface on
                the same network as the route.
            NEXT_HOP_INSTANCE_NOT_FOUND (464250446):
                The route's nextHopInstance URL refers to an
                instance that does not exist.
            NEXT_HOP_INSTANCE_NOT_ON_NETWORK (243758146):
                The route's nextHopInstance URL refers to an
                instance that is not on the same network as the
                route.
            NEXT_HOP_NOT_RUNNING (417081265):
                The route's next hop instance does not have a
                status of RUNNING.
            NOT_CRITICAL_ERROR (105763924):
                Error which is not critical. We decided to
                continue the process despite the mentioned
                error.
            NO_RESULTS_ON_PAGE (30036744):
                No results are present on a particular list
                page.
            PARTIAL_SUCCESS (39966469):
                Success is reported, but some results may be
                missing due to errors
            REQUIRED_TOS_AGREEMENT (3745539):
                The user attempted to use a resource that
                requires a TOS they have not accepted.
            RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING (496728641):
                Warning that a resource is in use.
            RESOURCE_NOT_DELETED (168598460):
                One or more of the resources set to
                auto-delete could not be deleted because they
                were in use.
            SCHEMA_VALIDATION_IGNORED (275245642):
                When a resource schema validation is ignored.
            SINGLE_INSTANCE_PROPERTY_TEMPLATE (268305617):
                Instance template used in instance group
                manager is valid as such, but its application
                does not make a lot of sense, because it allows
                only single instance in instance group.
            UNDECLARED_PROPERTIES (390513439):
                When undeclared properties in the schema are
                present
            UNREACHABLE (13328052):
                A given scope cannot be reached.
        """
        UNDEFINED_CODE = 0
        CLEANUP_FAILED = 150308440
        DEPRECATED_RESOURCE_USED = 391835586
        DEPRECATED_TYPE_USED = 346526230
        DISK_SIZE_LARGER_THAN_IMAGE_SIZE = 369442967
        EXPERIMENTAL_TYPE_USED = 451954443
        EXTERNAL_API_WARNING = 175546307
        FIELD_VALUE_OVERRIDEN = 329669423
        INJECTED_KERNELS_DEPRECATED = 417377419
        INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB = 401542606
        LARGE_DEPLOYMENT_WARNING = 481440678
        MISSING_TYPE_DEPENDENCY = 344505463
        NEXT_HOP_ADDRESS_NOT_ASSIGNED = 324964999
        NEXT_HOP_CANNOT_IP_FORWARD = 383382887
        NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE = 146748434
        NEXT_HOP_INSTANCE_NOT_FOUND = 464250446
        NEXT_HOP_INSTANCE_NOT_ON_NETWORK = 243758146
        NEXT_HOP_NOT_RUNNING = 417081265
        NOT_CRITICAL_ERROR = 105763924
        NO_RESULTS_ON_PAGE = 30036744
        PARTIAL_SUCCESS = 39966469
        REQUIRED_TOS_AGREEMENT = 3745539
        RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING = 496728641
        RESOURCE_NOT_DELETED = 168598460
        SCHEMA_VALIDATION_IGNORED = 275245642
        SINGLE_INSTANCE_PROPERTY_TEMPLATE = 268305617
        UNDECLARED_PROPERTIES = 390513439
        UNREACHABLE = 13328052

    code: str = proto.Field(
        proto.STRING,
        number=3059181,
        optional=True,
    )
    data: MutableSequence["Data"] = proto.RepeatedField(
        proto.MESSAGE,
        number=3076010,
        message="Data",
    )
    message: str = proto.Field(
        proto.STRING,
        number=418054151,
        optional=True,
    )


class WeightedBackendService(proto.Message):
    r"""In contrast to a single BackendService in HttpRouteAction to
    which all matching traffic is directed to,
    WeightedBackendService allows traffic to be split across
    multiple backend services. The volume of traffic for each
    backend service is proportional to the weight specified in each
    WeightedBackendService


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        backend_service (str):
            The full or partial URL to the default
            BackendService resource. Before forwarding the
            request to backendService, the load balancer
            applies any relevant headerActions specified as
            part of this backendServiceWeight.

            This field is a member of `oneof`_ ``_backend_service``.
        header_action (google.cloud.compute_v1.types.HttpHeaderAction):
            Specifies changes to request and response
            headers that need to take effect for the
            selected backendService. headerAction specified
            here take effect before headerAction in the
            enclosing HttpRouteRule, PathMatcher and UrlMap.
            headerAction is not supported for load balancers
            that have their loadBalancingScheme set to
            EXTERNAL. Not supported when the URL map is
            bound to a target gRPC proxy that has
            validateForProxyless field set to true.

            This field is a member of `oneof`_ ``_header_action``.
        weight (int):
            Specifies the fraction of traffic sent to a
            backend service, computed as weight / (sum of
            all weightedBackendService weights in
            routeAction) . The selection of a backend
            service is determined only for new traffic. Once
            a user's request has been directed to a backend
            service, subsequent requests are sent to the
            same backend service as determined by the
            backend service's session affinity policy. The
            value must be from 0 to 1000.

            This field is a member of `oneof`_ ``_weight``.
    """

    backend_service: str = proto.Field(
        proto.STRING,
        number=306946058,
        optional=True,
    )
    header_action: "HttpHeaderAction" = proto.Field(
        proto.MESSAGE,
        number=328077352,
        optional=True,
        message="HttpHeaderAction",
    )
    weight: int = proto.Field(
        proto.UINT32,
        number=282149496,
        optional=True,
    )


class XpnHostList(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Project]):
            [Output Only] A list of shared VPC host project URLs.
        kind (str):
            [Output Only] Type of resource. Always compute#xpnHostList
            for lists of shared VPC hosts.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Project"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Project",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class XpnResourceId(proto.Message):
    r"""Service resource (a.k.a service project) ID.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            The ID of the service resource. In the case
            of projects, this field supports project id
            (e.g., my-project-123) and project number (e.g.
            12345678).

            This field is a member of `oneof`_ ``_id``.
        type_ (str):
            The type of the service resource.
            Check the Type enum for the list of possible
            values.

            This field is a member of `oneof`_ ``_type``.
    """

    class Type(proto.Enum):
        r"""The type of the service resource.

        Values:
            UNDEFINED_TYPE (0):
                A value indicating that the enum field is not
                set.
            PROJECT (408671993):
                No description available.
            XPN_RESOURCE_TYPE_UNSPECIFIED (151607034):
                No description available.
        """
        UNDEFINED_TYPE = 0
        PROJECT = 408671993
        XPN_RESOURCE_TYPE_UNSPECIFIED = 151607034

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    type_: str = proto.Field(
        proto.STRING,
        number=3575610,
        optional=True,
    )


class Zone(proto.Message):
    r"""Represents a Zone resource. A zone is a deployment area.
    These deployment areas are subsets of a region. For example the
    zone us-east1-a is located in the us-east1 region. For more
    information, read Regions and Zones.


    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        available_cpu_platforms (MutableSequence[str]):
            [Output Only] Available cpu/platform selections for the
            zone.
        creation_timestamp (str):
            [Output Only] Creation timestamp in RFC3339 text format.

            This field is a member of `oneof`_ ``_creation_timestamp``.
        deprecated (google.cloud.compute_v1.types.DeprecationStatus):
            [Output Only] The deprecation status associated with this
            zone.

            This field is a member of `oneof`_ ``_deprecated``.
        description (str):
            [Output Only] Textual description of the resource.

            This field is a member of `oneof`_ ``_description``.
        id (int):
            [Output Only] The unique identifier for the resource. This
            identifier is defined by the server.

            This field is a member of `oneof`_ ``_id``.
        kind (str):
            [Output Only] Type of the resource. Always compute#zone for
            zones.

            This field is a member of `oneof`_ ``_kind``.
        name (str):
            [Output Only] Name of the resource.

            This field is a member of `oneof`_ ``_name``.
        region (str):
            [Output Only] Full URL reference to the region which hosts
            the zone.

            This field is a member of `oneof`_ ``_region``.
        self_link (str):
            [Output Only] Server-defined URL for the resource.

            This field is a member of `oneof`_ ``_self_link``.
        status (str):
            [Output Only] Status of the zone, either UP or DOWN. Check
            the Status enum for the list of possible values.

            This field is a member of `oneof`_ ``_status``.
        supports_pzs (bool):
            [Output Only] Reserved for future use.

            This field is a member of `oneof`_ ``_supports_pzs``.
    """

    class Status(proto.Enum):
        r"""[Output Only] Status of the zone, either UP or DOWN.

        Values:
            UNDEFINED_STATUS (0):
                A value indicating that the enum field is not
                set.
            DOWN (2104482):
                No description available.
            UP (2715):
                No description available.
        """
        UNDEFINED_STATUS = 0
        DOWN = 2104482
        UP = 2715

    available_cpu_platforms: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=175536531,
    )
    creation_timestamp: str = proto.Field(
        proto.STRING,
        number=30525366,
        optional=True,
    )
    deprecated: "DeprecationStatus" = proto.Field(
        proto.MESSAGE,
        number=515138995,
        optional=True,
        message="DeprecationStatus",
    )
    description: str = proto.Field(
        proto.STRING,
        number=422937596,
        optional=True,
    )
    id: int = proto.Field(
        proto.UINT64,
        number=3355,
        optional=True,
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    name: str = proto.Field(
        proto.STRING,
        number=3373707,
        optional=True,
    )
    region: str = proto.Field(
        proto.STRING,
        number=138946292,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    status: str = proto.Field(
        proto.STRING,
        number=181260274,
        optional=True,
    )
    supports_pzs: bool = proto.Field(
        proto.BOOL,
        number=83983214,
        optional=True,
    )


class ZoneList(proto.Message):
    r"""Contains a list of zone resources.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        id (str):
            [Output Only] Unique identifier for the resource; defined by
            the server.

            This field is a member of `oneof`_ ``_id``.
        items (MutableSequence[google.cloud.compute_v1.types.Zone]):
            A list of Zone resources.
        kind (str):
            Type of resource.

            This field is a member of `oneof`_ ``_kind``.
        next_page_token (str):
            [Output Only] This token allows you to get the next page of
            results for list requests. If the number of results is
            larger than maxResults, use the nextPageToken as a value for
            the query parameter pageToken in the next list request.
            Subsequent list requests will have their own nextPageToken
            to continue paging through the results.

            This field is a member of `oneof`_ ``_next_page_token``.
        self_link (str):
            [Output Only] Server-defined URL for this resource.

            This field is a member of `oneof`_ ``_self_link``.
        warning (google.cloud.compute_v1.types.Warning):
            [Output Only] Informational warning message.

            This field is a member of `oneof`_ ``_warning``.
    """

    @property
    def raw_page(self):
        return self

    id: str = proto.Field(
        proto.STRING,
        number=3355,
        optional=True,
    )
    items: MutableSequence["Zone"] = proto.RepeatedField(
        proto.MESSAGE,
        number=100526016,
        message="Zone",
    )
    kind: str = proto.Field(
        proto.STRING,
        number=3292052,
        optional=True,
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=79797525,
        optional=True,
    )
    self_link: str = proto.Field(
        proto.STRING,
        number=456214797,
        optional=True,
    )
    warning: "Warning" = proto.Field(
        proto.MESSAGE,
        number=50704284,
        optional=True,
        message="Warning",
    )


class ZoneSetLabelsRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        label_fingerprint (str):
            The fingerprint of the previous set of labels
            for this resource, used to detect conflicts. The
            fingerprint is initially generated by Compute
            Engine and changes after every request to modify
            or update labels. You must always provide an
            up-to-date fingerprint hash in order to update
            or change labels. Make a get() request to the
            resource to get the latest fingerprint.

            This field is a member of `oneof`_ ``_label_fingerprint``.
        labels (MutableMapping[str, str]):
            The labels to set for this resource.
    """

    label_fingerprint: str = proto.Field(
        proto.STRING,
        number=178124825,
        optional=True,
    )
    labels: MutableMapping[str, str] = proto.MapField(
        proto.STRING,
        proto.STRING,
        number=500195327,
    )


class ZoneSetPolicyRequest(proto.Message):
    r"""

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        bindings (MutableSequence[google.cloud.compute_v1.types.Binding]):
            Flatten Policy to create a backwacd
            compatible wire-format. Deprecated. Use 'policy'
            to specify bindings.
        etag (str):
            Flatten Policy to create a backward
            compatible wire-format. Deprecated. Use 'policy'
            to specify the etag.

            This field is a member of `oneof`_ ``_etag``.
        policy (google.cloud.compute_v1.types.Policy):
            REQUIRED: The complete policy to be applied
            to the 'resource'. The size of the policy is
            limited to a few 10s of KB. An empty policy is
            in general a valid policy but certain services
            (like Projects) might reject them.

            This field is a member of `oneof`_ ``_policy``.
    """

    bindings: MutableSequence["Binding"] = proto.RepeatedField(
        proto.MESSAGE,
        number=403251854,
        message="Binding",
    )
    etag: str = proto.Field(
        proto.STRING,
        number=3123477,
        optional=True,
    )
    policy: "Policy" = proto.Field(
        proto.MESSAGE,
        number=91071794,
        optional=True,
        message="Policy",
    )


__all__ = tuple(sorted(__protobuf__.manifest))
