From 1b46da85f41c881912552e4d7f96c79fb5ab8c44 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Thu, 5 Mar 2026 18:12:45 +0000 Subject: [PATCH] feat: generate libraries --- .librarian/state.yaml | 2 +- .../docs/compute_v1beta/services_.rst | 1 + .../docs/compute_v1beta/snapshot_groups.rst | 10 + .../google/cloud/compute_v1beta/__init__.py | 56 + .../cloud/compute_v1beta/gapic_metadata.json | 74 + .../compute_v1beta/services/disks/client.py | 14 +- .../instance_group_managers/client.py | 353 ++ .../transports/base.py | 14 + .../transports/rest.py | 256 + .../transports/rest_base.py | 60 + .../services/region_disks/client.py | 14 +- .../transports/rest_base.py | 14 +- .../compute_v1beta/services/routers/client.py | 2252 +++++-- .../compute_v1beta/services/routers/pagers.py | 76 + .../services/routers/transports/base.py | 73 + .../services/routers/transports/rest.py | 1862 ++++-- .../services/routers/transports/rest_base.py | 250 + .../services/snapshot_groups/__init__.py | 18 + .../services/snapshot_groups/client.py | 1954 ++++++ .../services/snapshot_groups/pagers.py | 117 + .../snapshot_groups/transports/README.rst | 9 + .../snapshot_groups/transports/__init__.py | 30 + .../snapshot_groups/transports/base.py | 272 + .../snapshot_groups/transports/rest.py | 1878 ++++++ .../snapshot_groups/transports/rest_base.py | 443 ++ .../cloud/compute_v1beta/types/__init__.py | 54 + .../cloud/compute_v1beta/types/compute.py | 3021 +++++++-- ...s_configure_accelerator_topologies_sync.py | 55 + ...generated_routers_delete_named_set_sync.py | 55 + ...ta_generated_routers_get_named_set_sync.py | 55 + ..._generated_routers_list_named_sets_sync.py | 56 + ..._generated_routers_patch_named_set_sync.py | 55 + ...generated_routers_update_named_set_sync.py | 55 + ...a_generated_snapshot_groups_delete_sync.py | 54 + ...ted_snapshot_groups_get_iam_policy_sync.py | 54 + ...beta_generated_snapshot_groups_get_sync.py | 54 + ...a_generated_snapshot_groups_insert_sync.py | 53 + ...eta_generated_snapshot_groups_list_sync.py | 54 + ...ted_snapshot_groups_set_iam_policy_sync.py | 54 + ...apshot_groups_test_iam_permissions_sync.py | 54 + ..._metadata_google.cloud.compute.v1beta.json | 1822 ++++-- .../compute_v1beta/test_backend_services.py | 6 + .../unit/gapic/compute_v1beta/test_disks.py | 7 + .../test_instance_group_managers.py | 4512 ++++++++------ .../gapic/compute_v1beta/test_instances.py | 6 +- .../test_region_backend_services.py | 6 + .../compute_v1beta/test_region_commitments.py | 3 + .../gapic/compute_v1beta/test_region_disks.py | 7 + .../compute_v1beta/test_region_instances.py | 6 +- .../compute_v1beta/test_region_snapshots.py | 6 + .../test_reservation_sub_blocks.py | 114 +- .../gapic/compute_v1beta/test_reservations.py | 2 + .../unit/gapic/compute_v1beta/test_routers.py | 5516 +++++++++++++---- .../compute_v1beta/test_snapshot_groups.py | 4875 +++++++++++++++ .../gapic/compute_v1beta/test_snapshots.py | 6 + 55 files changed, 25611 insertions(+), 5168 deletions(-) create mode 100644 packages/google-cloud-compute-v1beta/docs/compute_v1beta/snapshot_groups.rst create mode 100644 packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/__init__.py create mode 100644 packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/client.py create mode 100644 packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/pagers.py create mode 100644 packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/README.rst create mode 100644 packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/__init__.py create mode 100644 packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/base.py create mode 100644 packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/rest.py create mode 100644 packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/rest_base.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_instance_group_managers_configure_accelerator_topologies_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_delete_named_set_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_get_named_set_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_list_named_sets_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_patch_named_set_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_update_named_set_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_delete_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_get_iam_policy_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_get_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_insert_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_list_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_set_iam_policy_sync.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_test_iam_permissions_sync.py create mode 100644 packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_snapshot_groups.py diff --git a/.librarian/state.yaml b/.librarian/state.yaml index 770cc5ac57d0..1905ae0294ee 100644 --- a/.librarian/state.yaml +++ b/.librarian/state.yaml @@ -1087,7 +1087,7 @@ libraries: tag_format: '{id}-v{version}' - id: google-cloud-compute-v1beta version: 0.7.0 - last_generated_commit: 69bf99a9d0910fa86c3c5867ea357aa004dfcc55 + last_generated_commit: e8a3d84236cc27875073b1f817e49d7faee11f0d apis: - path: google/cloud/compute/v1beta service_config: compute_v1beta.yaml diff --git a/packages/google-cloud-compute-v1beta/docs/compute_v1beta/services_.rst b/packages/google-cloud-compute-v1beta/docs/compute_v1beta/services_.rst index be5ec024f3e8..db8a5f2957e3 100644 --- a/packages/google-cloud-compute-v1beta/docs/compute_v1beta/services_.rst +++ b/packages/google-cloud-compute-v1beta/docs/compute_v1beta/services_.rst @@ -109,6 +109,7 @@ Services for Google Cloud Compute v1beta API routes security_policies service_attachments + snapshot_groups snapshots snapshot_settings_service ssl_certificates diff --git a/packages/google-cloud-compute-v1beta/docs/compute_v1beta/snapshot_groups.rst b/packages/google-cloud-compute-v1beta/docs/compute_v1beta/snapshot_groups.rst new file mode 100644 index 000000000000..7945beeed786 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/docs/compute_v1beta/snapshot_groups.rst @@ -0,0 +1,10 @@ +SnapshotGroups +-------------------------------- + +.. automodule:: google.cloud.compute_v1beta.services.snapshot_groups + :members: + :inherited-members: + +.. automodule:: google.cloud.compute_v1beta.services.snapshot_groups.pagers + :members: + :inherited-members: diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/__init__.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/__init__.py index 1c3704249725..96345a2cc516 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/__init__.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/__init__.py @@ -145,6 +145,7 @@ from .services.routes import RoutesClient from .services.security_policies import SecurityPoliciesClient from .services.service_attachments import ServiceAttachmentsClient +from .services.snapshot_groups import SnapshotGroupsClient from .services.snapshot_settings_service import SnapshotSettingsServiceClient from .services.snapshots import SnapshotsClient from .services.ssl_certificates import SslCertificatesClient @@ -303,6 +304,7 @@ AutoscalingPolicyScalingSchedule, AWSV4Signature, Backend, + BackendBackendOrchestrationInfo, BackendBucket, BackendBucketAggregatedList, BackendBucketCdnPolicy, @@ -339,6 +341,7 @@ BackendServiceLogConfig, BackendServiceNetworkPassThroughLbTrafficPolicy, BackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity, + BackendServiceOrchestrationInfo, BackendServiceParams, BackendServiceReference, BackendServicesGetEffectiveSecurityPoliciesResponse, @@ -393,6 +396,7 @@ CompositeHealthCheckList, CompositeHealthChecksScopedList, ConfidentialInstanceConfig, + ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, ConnectionDraining, ConsistentHashLoadBalancerSettings, ConsistentHashLoadBalancerSettingsHttpCookie, @@ -449,6 +453,7 @@ DeleteInterconnectRequest, DeleteLicenseRequest, DeleteMachineImageRequest, + DeleteNamedSetRouterRequest, DeleteNetworkAttachmentRequest, DeleteNetworkEdgeSecurityServiceRequest, DeleteNetworkEndpointGroupRequest, @@ -504,6 +509,7 @@ DeleteServiceAttachmentRequest, DeleteSignedUrlKeyBackendBucketRequest, DeleteSignedUrlKeyBackendServiceRequest, + DeleteSnapshotGroupRequest, DeleteSnapshotRequest, DeleteSslCertificateRequest, DeleteSslPolicyRequest, @@ -684,6 +690,7 @@ GetIamPolicyReservationSubBlockRequest, GetIamPolicyResourcePolicyRequest, GetIamPolicyServiceAttachmentRequest, + GetIamPolicySnapshotGroupRequest, GetIamPolicySnapshotRequest, GetIamPolicyStoragePoolRequest, GetIamPolicySubnetworkRequest, @@ -708,6 +715,7 @@ GetMachineImageRequest, GetMachineTypeRequest, GetMacsecConfigInterconnectRequest, + GetNamedSetRouterRequest, GetNatIpInfoRouterRequest, GetNatMappingInfoRoutersRequest, GetNetworkAttachmentRequest, @@ -788,6 +796,7 @@ GetServiceAttachmentRequest, GetShieldedInstanceIdentityInstanceRequest, GetShieldedVmIdentityInstanceRequest, + GetSnapshotGroupRequest, GetSnapshotRequest, GetSnapshotSettingRequest, GetSslCertificateRequest, @@ -956,6 +965,7 @@ InsertRouterRequest, InsertSecurityPolicyRequest, InsertServiceAttachmentRequest, + InsertSnapshotGroupRequest, InsertSnapshotRequest, InsertSslCertificateRequest, InsertSslPolicyRequest, @@ -1002,11 +1012,13 @@ InstanceGroupManagerResourcePolicies, InstanceGroupManagersAbandonInstancesRequest, InstanceGroupManagersApplyUpdatesRequest, + InstanceGroupManagersConfigureAcceleratorTopologiesRequest, InstanceGroupManagersCreateInstancesRequest, InstanceGroupManagersDeleteInstancesRequest, InstanceGroupManagersDeletePerInstanceConfigsReq, InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse, InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyInfo, + InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyState, InstanceGroupManagersListErrorsResponse, InstanceGroupManagersListManagedInstancesResponse, InstanceGroupManagersListPerInstanceConfigsResp, @@ -1222,6 +1234,7 @@ ListMachineTypesRequest, ListManagedInstancesInstanceGroupManagersRequest, ListManagedInstancesRegionInstanceGroupManagersRequest, + ListNamedSetsRoutersRequest, ListNetworkAttachmentsRequest, ListNetworkEndpointGroupsRequest, ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest, @@ -1291,6 +1304,8 @@ ListRoutesRequest, ListSecurityPoliciesRequest, ListServiceAttachmentsRequest, + ListSnapshotGroups, + ListSnapshotGroupsRequest, ListSnapshotsRequest, ListSslCertificatesRequest, ListSslPoliciesRequest, @@ -1323,6 +1338,7 @@ LocationPolicy, LocationPolicyLocation, LocationPolicyLocationConstraints, + LocationPolicyZoneConfiguration, MachineImage, MachineImageList, MachineImageParams, @@ -1357,6 +1373,7 @@ MultiMigStatusAcceleratorTopology, MultiMigStatusAcceleratorTopologyAcceleratorTopologyStateLastCheck, NamedPort, + NamedSet, NatIpInfo, NatIpInfoNatIpInfoMapping, NatIpInfoResponse, @@ -1482,6 +1499,7 @@ PatchInterconnectAttachmentRequest, PatchInterconnectGroupRequest, PatchInterconnectRequest, + PatchNamedSetRouterRequest, PatchNetworkAttachmentRequest, PatchNetworkEdgeSecurityServiceRequest, PatchNetworkFirewallPolicyRequest, @@ -1658,6 +1676,7 @@ ReservationBlocksGetResponse, ReservationBlocksListResponse, ReservationList, + ReservationParams, ReservationsBlocksPerformMaintenanceRequest, ReservationSlot, ReservationSlotPhysicalTopology, @@ -1752,8 +1771,10 @@ RouterNatSubnetworkToNat, RouterNatSubnetworkToNat64, RouterParams, + RoutersGetNamedSetResponse, RoutersGetRoutePolicyResponse, RoutersListBgpRoutes, + RoutersListNamedSets, RoutersListRoutePolicies, RoutersPreviewResponse, RoutersScopedList, @@ -1863,6 +1884,7 @@ SetIamPolicyReservationSubBlockRequest, SetIamPolicyResourcePolicyRequest, SetIamPolicyServiceAttachmentRequest, + SetIamPolicySnapshotGroupRequest, SetIamPolicySnapshotRequest, SetIamPolicyStoragePoolRequest, SetIamPolicySubnetworkRequest, @@ -1941,6 +1963,10 @@ SimulateMaintenanceEventNodeGroupRequest, Snapshot, SnapshotAggregatedList, + SnapshotGroup, + SnapshotGroupParameters, + SnapshotGroupSourceInfo, + SnapshotGroupSourceInstantSnapshotGroupInfo, SnapshotList, SnapshotParams, SnapshotSettings, @@ -2126,6 +2152,7 @@ TestIamPermissionsRouterRequest, TestIamPermissionsSecurityPolicyRequest, TestIamPermissionsServiceAttachmentRequest, + TestIamPermissionsSnapshotGroupRequest, TestIamPermissionsSnapshotRequest, TestIamPermissionsSslCertificateRequest, TestIamPermissionsSslPolicyRequest, @@ -2159,6 +2186,7 @@ UpdateInstanceGroupManagerRequest, UpdateInstanceRequest, UpdateLicenseRequest, + UpdateNamedSetRouterRequest, UpdateNetworkInterfaceInstanceRequest, UpdatePeeringNetworkRequest, UpdatePerInstanceConfigsInstanceGroupManagerRequest, @@ -2492,6 +2520,7 @@ def _get_version(dependency_name): "AutoscalingPolicyScaleInControl", "AutoscalingPolicyScalingSchedule", "Backend", + "BackendBackendOrchestrationInfo", "BackendBucket", "BackendBucketAggregatedList", "BackendBucketCdnPolicy", @@ -2529,6 +2558,7 @@ def _get_version(dependency_name): "BackendServiceLogConfig", "BackendServiceNetworkPassThroughLbTrafficPolicy", "BackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity", + "BackendServiceOrchestrationInfo", "BackendServiceParams", "BackendServiceReference", "BackendServiceTlsSettings", @@ -2584,6 +2614,7 @@ def _get_version(dependency_name): "CompositeHealthCheckList", "CompositeHealthChecksScopedList", "ConfidentialInstanceConfig", + "ConfigureAcceleratorTopologiesInstanceGroupManagerRequest", "ConnectionDraining", "ConsistentHashLoadBalancerSettings", "ConsistentHashLoadBalancerSettingsHttpCookie", @@ -2641,6 +2672,7 @@ def _get_version(dependency_name): "DeleteInterconnectRequest", "DeleteLicenseRequest", "DeleteMachineImageRequest", + "DeleteNamedSetRouterRequest", "DeleteNetworkAttachmentRequest", "DeleteNetworkEdgeSecurityServiceRequest", "DeleteNetworkEndpointGroupRequest", @@ -2696,6 +2728,7 @@ def _get_version(dependency_name): "DeleteServiceAttachmentRequest", "DeleteSignedUrlKeyBackendBucketRequest", "DeleteSignedUrlKeyBackendServiceRequest", + "DeleteSnapshotGroupRequest", "DeleteSnapshotRequest", "DeleteSslCertificateRequest", "DeleteSslPolicyRequest", @@ -2886,6 +2919,7 @@ def _get_version(dependency_name): "GetIamPolicyReservationSubBlockRequest", "GetIamPolicyResourcePolicyRequest", "GetIamPolicyServiceAttachmentRequest", + "GetIamPolicySnapshotGroupRequest", "GetIamPolicySnapshotRequest", "GetIamPolicyStoragePoolRequest", "GetIamPolicySubnetworkRequest", @@ -2910,6 +2944,7 @@ def _get_version(dependency_name): "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", "GetNetworkAttachmentRequest", @@ -2990,6 +3025,7 @@ def _get_version(dependency_name): "GetServiceAttachmentRequest", "GetShieldedInstanceIdentityInstanceRequest", "GetShieldedVmIdentityInstanceRequest", + "GetSnapshotGroupRequest", "GetSnapshotRequest", "GetSnapshotSettingRequest", "GetSslCertificateRequest", @@ -3166,6 +3202,7 @@ def _get_version(dependency_name): "InsertRouterRequest", "InsertSecurityPolicyRequest", "InsertServiceAttachmentRequest", + "InsertSnapshotGroupRequest", "InsertSnapshotRequest", "InsertSslCertificateRequest", "InsertSslPolicyRequest", @@ -3226,11 +3263,13 @@ def _get_version(dependency_name): "InstanceGroupManagersAbandonInstancesRequest", "InstanceGroupManagersApplyUpdatesRequest", "InstanceGroupManagersClient", + "InstanceGroupManagersConfigureAcceleratorTopologiesRequest", "InstanceGroupManagersCreateInstancesRequest", "InstanceGroupManagersDeleteInstancesRequest", "InstanceGroupManagersDeletePerInstanceConfigsReq", "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse", "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyInfo", + "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyState", "InstanceGroupManagersListErrorsResponse", "InstanceGroupManagersListManagedInstancesResponse", "InstanceGroupManagersListPerInstanceConfigsResp", @@ -3448,6 +3487,7 @@ def _get_version(dependency_name): "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", "ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest", @@ -3517,6 +3557,8 @@ def _get_version(dependency_name): "ListRoutesRequest", "ListSecurityPoliciesRequest", "ListServiceAttachmentsRequest", + "ListSnapshotGroups", + "ListSnapshotGroupsRequest", "ListSnapshotsRequest", "ListSslCertificatesRequest", "ListSslPoliciesRequest", @@ -3549,6 +3591,7 @@ def _get_version(dependency_name): "LocationPolicy", "LocationPolicyLocation", "LocationPolicyLocationConstraints", + "LocationPolicyZoneConfiguration", "MachineImage", "MachineImageList", "MachineImageParams", @@ -3585,6 +3628,7 @@ def _get_version(dependency_name): "MultiMigStatusAcceleratorTopologyAcceleratorTopologyStateLastCheck", "MultiMigsList", "NamedPort", + "NamedSet", "NatIpInfo", "NatIpInfoNatIpInfoMapping", "NatIpInfoResponse", @@ -3721,6 +3765,7 @@ def _get_version(dependency_name): "PatchInterconnectAttachmentRequest", "PatchInterconnectGroupRequest", "PatchInterconnectRequest", + "PatchNamedSetRouterRequest", "PatchNetworkAttachmentRequest", "PatchNetworkEdgeSecurityServiceRequest", "PatchNetworkFirewallPolicyRequest", @@ -3939,6 +3984,7 @@ def _get_version(dependency_name): "ReservationBlocksGetResponse", "ReservationBlocksListResponse", "ReservationList", + "ReservationParams", "ReservationSlot", "ReservationSlotPhysicalTopology", "ReservationSlotStatus", @@ -4045,8 +4091,10 @@ def _get_version(dependency_name): "RouterStatusNatStatusNatRuleStatus", "RouterStatusResponse", "RoutersClient", + "RoutersGetNamedSetResponse", "RoutersGetRoutePolicyResponse", "RoutersListBgpRoutes", + "RoutersListNamedSets", "RoutersListRoutePolicies", "RoutersPreviewResponse", "RoutersScopedList", @@ -4155,6 +4203,7 @@ def _get_version(dependency_name): "SetIamPolicyReservationSubBlockRequest", "SetIamPolicyResourcePolicyRequest", "SetIamPolicyServiceAttachmentRequest", + "SetIamPolicySnapshotGroupRequest", "SetIamPolicySnapshotRequest", "SetIamPolicyStoragePoolRequest", "SetIamPolicySubnetworkRequest", @@ -4233,6 +4282,11 @@ def _get_version(dependency_name): "SimulateMaintenanceEventNodeGroupRequest", "Snapshot", "SnapshotAggregatedList", + "SnapshotGroup", + "SnapshotGroupParameters", + "SnapshotGroupSourceInfo", + "SnapshotGroupSourceInstantSnapshotGroupInfo", + "SnapshotGroupsClient", "SnapshotList", "SnapshotParams", "SnapshotSettings", @@ -4432,6 +4486,7 @@ def _get_version(dependency_name): "TestIamPermissionsRouterRequest", "TestIamPermissionsSecurityPolicyRequest", "TestIamPermissionsServiceAttachmentRequest", + "TestIamPermissionsSnapshotGroupRequest", "TestIamPermissionsSnapshotRequest", "TestIamPermissionsSslCertificateRequest", "TestIamPermissionsSslPolicyRequest", @@ -4465,6 +4520,7 @@ def _get_version(dependency_name): "UpdateInstanceGroupManagerRequest", "UpdateInstanceRequest", "UpdateLicenseRequest", + "UpdateNamedSetRouterRequest", "UpdateNetworkInterfaceInstanceRequest", "UpdatePeeringNetworkRequest", "UpdatePerInstanceConfigsInstanceGroupManagerRequest", diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/gapic_metadata.json b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/gapic_metadata.json index 8050793e13f4..0d75c1cd9aff 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/gapic_metadata.json +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/gapic_metadata.json @@ -1244,6 +1244,11 @@ "apply_updates_to_instances" ] }, + "ConfigureAcceleratorTopologies": { + "methods": [ + "configure_accelerator_topologies" + ] + }, "CreateInstances": { "methods": [ "create_instances" @@ -5083,6 +5088,11 @@ "delete" ] }, + "DeleteNamedSet": { + "methods": [ + "delete_named_set" + ] + }, "DeleteRoutePolicy": { "methods": [ "delete_route_policy" @@ -5093,6 +5103,11 @@ "get" ] }, + "GetNamedSet": { + "methods": [ + "get_named_set" + ] + }, "GetNatIpInfo": { "methods": [ "get_nat_ip_info" @@ -5128,6 +5143,11 @@ "list_bgp_routes" ] }, + "ListNamedSets": { + "methods": [ + "list_named_sets" + ] + }, "ListRoutePolicies": { "methods": [ "list_route_policies" @@ -5138,6 +5158,11 @@ "patch" ] }, + "PatchNamedSet": { + "methods": [ + "patch_named_set" + ] + }, "PatchRoutePolicy": { "methods": [ "patch_route_policy" @@ -5158,6 +5183,11 @@ "update" ] }, + "UpdateNamedSet": { + "methods": [ + "update_named_set" + ] + }, "UpdateRoutePolicy": { "methods": [ "update_route_policy" @@ -5329,6 +5359,50 @@ } } }, + "SnapshotGroups": { + "clients": { + "rest": { + "libraryClient": "SnapshotGroupsClient", + "rpcs": { + "Delete": { + "methods": [ + "delete" + ] + }, + "Get": { + "methods": [ + "get" + ] + }, + "GetIamPolicy": { + "methods": [ + "get_iam_policy" + ] + }, + "Insert": { + "methods": [ + "insert" + ] + }, + "List": { + "methods": [ + "list" + ] + }, + "SetIamPolicy": { + "methods": [ + "set_iam_policy" + ] + }, + "TestIamPermissions": { + "methods": [ + "test_iam_permissions" + ] + } + } + } + } + }, "SnapshotSettingsService": { "clients": { "rest": { diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/disks/client.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/disks/client.py index 799cc7cc5491..51d409d8a1fa 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/disks/client.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/disks/client.py @@ -5341,10 +5341,9 @@ def update_unary( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> compute.Operation: - r"""Updates the specified disk with the data included in the - request. The update is performed only on selected fields - included as part of update-mask. Only the following fields can - be modified: user_license. + r"""Updates the specified disk with the data included in + the request. The update is performed only on selected + fields included as part of update-mask. .. code-block:: python @@ -5484,10 +5483,9 @@ def update( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> extended_operation.ExtendedOperation: - r"""Updates the specified disk with the data included in the - request. The update is performed only on selected fields - included as part of update-mask. Only the following fields can - be modified: user_license. + r"""Updates the specified disk with the data included in + the request. The update is performed only on selected + fields included as part of update-mask. .. code-block:: python diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/client.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/client.py index baa582fe059b..e381cb5c1737 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/client.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/client.py @@ -1558,6 +1558,359 @@ def error_code(self): # Done; return the response. return response + def configure_accelerator_topologies_unary( + self, + request: Optional[ + Union[ + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, dict + ] + ] = None, + *, + project: Optional[str] = None, + zone: Optional[str] = None, + instance_group_manager: Optional[str] = None, + instance_group_managers_configure_accelerator_topologies_request_resource: Optional[ + compute.InstanceGroupManagersConfigureAcceleratorTopologiesRequest + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Updates the accelerator topologies configuration. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_configure_accelerator_topologies(): + # Create a client + client = compute_v1beta.InstanceGroupManagersClient() + + # Initialize request argument(s) + request = compute_v1beta.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest( + instance_group_manager="instance_group_manager_value", + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.configure_accelerator_topologies(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, dict]): + The request object. A request message for + InstanceGroupManagers.ConfigureAcceleratorTopologies. + See the method description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + zone (str): + The name of thezone + where the managed instance group is + located. It should conform to RFC1035. + + This corresponds to the ``zone`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + instance_group_manager (str): + The name of the managed instance + group. It should conform to RFC1035. + + This corresponds to the ``instance_group_manager`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + instance_group_managers_configure_accelerator_topologies_request_resource (google.cloud.compute_v1beta.types.InstanceGroupManagersConfigureAcceleratorTopologiesRequest): + The body resource for this request + This corresponds to the ``instance_group_managers_configure_accelerator_topologies_request_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [ + project, + zone, + instance_group_manager, + instance_group_managers_configure_accelerator_topologies_request_resource, + ] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance( + request, compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest + ): + request = compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest( + request + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if zone is not None: + request.zone = zone + if instance_group_manager is not None: + request.instance_group_manager = instance_group_manager + if ( + instance_group_managers_configure_accelerator_topologies_request_resource + is not None + ): + request.instance_group_managers_configure_accelerator_topologies_request_resource = instance_group_managers_configure_accelerator_topologies_request_resource + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.configure_accelerator_topologies + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("zone", request.zone), + ("instance_group_manager", request.instance_group_manager), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def configure_accelerator_topologies( + self, + request: Optional[ + Union[ + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, dict + ] + ] = None, + *, + project: Optional[str] = None, + zone: Optional[str] = None, + instance_group_manager: Optional[str] = None, + instance_group_managers_configure_accelerator_topologies_request_resource: Optional[ + compute.InstanceGroupManagersConfigureAcceleratorTopologiesRequest + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> extended_operation.ExtendedOperation: + r"""Updates the accelerator topologies configuration. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_configure_accelerator_topologies(): + # Create a client + client = compute_v1beta.InstanceGroupManagersClient() + + # Initialize request argument(s) + request = compute_v1beta.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest( + instance_group_manager="instance_group_manager_value", + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.configure_accelerator_topologies(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, dict]): + The request object. A request message for + InstanceGroupManagers.ConfigureAcceleratorTopologies. + See the method description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + zone (str): + The name of thezone + where the managed instance group is + located. It should conform to RFC1035. + + This corresponds to the ``zone`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + instance_group_manager (str): + The name of the managed instance + group. It should conform to RFC1035. + + This corresponds to the ``instance_group_manager`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + instance_group_managers_configure_accelerator_topologies_request_resource (google.cloud.compute_v1beta.types.InstanceGroupManagersConfigureAcceleratorTopologiesRequest): + The body resource for this request + This corresponds to the ``instance_group_managers_configure_accelerator_topologies_request_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [ + project, + zone, + instance_group_manager, + instance_group_managers_configure_accelerator_topologies_request_resource, + ] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance( + request, compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest + ): + request = compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest( + request + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if zone is not None: + request.zone = zone + if instance_group_manager is not None: + request.instance_group_manager = instance_group_manager + if ( + instance_group_managers_configure_accelerator_topologies_request_resource + is not None + ): + request.instance_group_managers_configure_accelerator_topologies_request_resource = instance_group_managers_configure_accelerator_topologies_request_resource + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.configure_accelerator_topologies + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("zone", request.zone), + ("instance_group_manager", request.instance_group_manager), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + operation_service = self._transport._zone_operations_client + operation_request = compute.GetZoneOperationRequest() + operation_request.project = request.project + operation_request.zone = request.zone + operation_request.operation = response.name + + get_operation = functools.partial(operation_service.get, operation_request) + # Cancel is not part of extended operations yet. + cancel_operation = lambda: None + + # Note: this class is an implementation detail to provide a uniform + # set of names for certain fields in the extended operation proto message. + # See google.api_core.extended_operation.ExtendedOperation for details + # on these properties and the expected interface. + class _CustomOperation(extended_operation.ExtendedOperation): + @property + def error_message(self): + return self._extended_operation.http_error_message + + @property + def error_code(self): + return self._extended_operation.http_error_status_code + + response = _CustomOperation.make(get_operation, cancel_operation, response) + + # Done; return the response. + return response + def create_instances_unary( self, request: Optional[ diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/base.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/base.py index 2440a3bcf5fe..c3babbcdb2dd 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/base.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/base.py @@ -156,6 +156,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.configure_accelerator_topologies: gapic_v1.method.wrap_method( + self.configure_accelerator_topologies, + default_timeout=None, + client_info=client_info, + ), self.create_instances: gapic_v1.method.wrap_method( self.create_instances, default_timeout=None, @@ -327,6 +332,15 @@ def apply_updates_to_instances( ]: raise NotImplementedError() + @property + def configure_accelerator_topologies( + self, + ) -> Callable[ + [compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + @property def create_instances( self, diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/rest.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/rest.py index f9e4e49ac1c9..ba7b436f02e2 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/rest.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/rest.py @@ -96,6 +96,14 @@ def post_apply_updates_to_instances(self, response): logging.log(f"Received response: {response}") return response + def pre_configure_accelerator_topologies(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_configure_accelerator_topologies(self, response): + logging.log(f"Received response: {response}") + return response + def pre_create_instances(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -458,6 +466,55 @@ def post_apply_updates_to_instances_with_metadata( """ return response, metadata + def pre_configure_accelerator_topologies( + self, + request: compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for configure_accelerator_topologies + + Override in a subclass to manipulate the request or metadata + before they are sent to the InstanceGroupManagers server. + """ + return request, metadata + + def post_configure_accelerator_topologies( + self, response: compute.Operation + ) -> compute.Operation: + """Post-rpc interceptor for configure_accelerator_topologies + + DEPRECATED. Please use the `post_configure_accelerator_topologies_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the InstanceGroupManagers server but before + it is returned to user code. This `post_configure_accelerator_topologies` interceptor runs + before the `post_configure_accelerator_topologies_with_metadata` interceptor. + """ + return response + + def post_configure_accelerator_topologies_with_metadata( + self, + response: compute.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for configure_accelerator_topologies + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the InstanceGroupManagers server but before it is returned to user code. + + We recommend only using this `post_configure_accelerator_topologies_with_metadata` + interceptor in new development instead of the `post_configure_accelerator_topologies` interceptor. + When both interceptors are used, this `post_configure_accelerator_topologies_with_metadata` interceptor runs after the + `post_configure_accelerator_topologies` interceptor. The (possibly modified) response returned by + `post_configure_accelerator_topologies` will be passed to + `post_configure_accelerator_topologies_with_metadata`. + """ + return response, metadata + def pre_create_instances( self, request: compute.CreateInstancesInstanceGroupManagerRequest, @@ -2324,6 +2381,192 @@ def __call__( ) return resp + class _ConfigureAcceleratorTopologies( + _BaseInstanceGroupManagersRestTransport._BaseConfigureAcceleratorTopologies, + InstanceGroupManagersRestStub, + ): + def __hash__(self): + return hash( + "InstanceGroupManagersRestTransport.ConfigureAcceleratorTopologies" + ) + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the configure accelerator + topologies method over HTTP. + + Args: + request (~.compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest): + The request object. A request message for + InstanceGroupManagers.ConfigureAcceleratorTopologies. + See the method description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.Operation: + Represents an Operation resource. + + Google Compute Engine has three Operation resources: + + - `Global `__ + - `Regional `__ + - `Zonal `__ + + You can use an operation resource to manage asynchronous + API requests. For more information, readHandling 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 `zoneOperations` resource. + + For more information, read Global, Regional, and Zonal + Resources. + + Note that completed Operation resources have a limited + retention period. + + """ + + http_options = _BaseInstanceGroupManagersRestTransport._BaseConfigureAcceleratorTopologies._get_http_options() + + request, metadata = self._interceptor.pre_configure_accelerator_topologies( + request, metadata + ) + transcoded_request = _BaseInstanceGroupManagersRestTransport._BaseConfigureAcceleratorTopologies._get_transcoded_request( + http_options, request + ) + + body = _BaseInstanceGroupManagersRestTransport._BaseConfigureAcceleratorTopologies._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseInstanceGroupManagersRestTransport._BaseConfigureAcceleratorTopologies._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.InstanceGroupManagersClient.ConfigureAcceleratorTopologies", + extra={ + "serviceName": "google.cloud.compute.v1beta.InstanceGroupManagers", + "rpcName": "ConfigureAcceleratorTopologies", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = InstanceGroupManagersRestTransport._ConfigureAcceleratorTopologies._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.Operation() + pb_resp = compute.Operation.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_configure_accelerator_topologies(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = ( + self._interceptor.post_configure_accelerator_topologies_with_metadata( + resp, response_metadata + ) + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.Operation.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.InstanceGroupManagersClient.configure_accelerator_topologies", + extra={ + "serviceName": "google.cloud.compute.v1beta.InstanceGroupManagers", + "rpcName": "ConfigureAcceleratorTopologies", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _CreateInstances( _BaseInstanceGroupManagersRestTransport._BaseCreateInstances, InstanceGroupManagersRestStub, @@ -6863,6 +7106,19 @@ def apply_updates_to_instances( self._session, self._host, self._interceptor ) # type: ignore + @property + def configure_accelerator_topologies( + self, + ) -> Callable[ + [compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest], + compute.Operation, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._ConfigureAcceleratorTopologies( + self._session, self._host, self._interceptor + ) # type: ignore + @property def create_instances( self, diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/rest_base.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/rest_base.py index 2b75eb34d1ad..ee2382e39778 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/rest_base.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/instance_group_managers/transports/rest_base.py @@ -247,6 +247,66 @@ def _get_query_params_json(transcoded_request): return query_params + class _BaseConfigureAcceleratorTopologies: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/configureAcceleratorTopologies", + "body": "instance_group_managers_configure_accelerator_topologies_request_resource", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = ( + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest.pb( + request + ) + ) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=False + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseInstanceGroupManagersRestTransport._BaseConfigureAcceleratorTopologies._get_unset_required_fields( + query_params + ) + ) + + return query_params + class _BaseCreateInstances: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/region_disks/client.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/region_disks/client.py index f8e19eaa511c..7fffc4191304 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/region_disks/client.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/region_disks/client.py @@ -4939,10 +4939,9 @@ def update_unary( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> compute.Operation: - r"""Update the specified disk with the data included in the request. - Update is performed only on selected fields included as part of - update-mask. Only the following fields can be modified: - user_license. + r"""Update the specified disk with the data included in + the request. Update is performed only on selected fields + included as part of update-mask. .. code-block:: python @@ -5083,10 +5082,9 @@ def update( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> extended_operation.ExtendedOperation: - r"""Update the specified disk with the data included in the request. - Update is performed only on selected fields included as part of - update-mask. Only the following fields can be modified: - user_license. + r"""Update the specified disk with the data included in + the request. Update is performed only on selected fields + included as part of update-mask. .. code-block:: python diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/reservation_sub_blocks/transports/rest_base.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/reservation_sub_blocks/transports/rest_base.py index bd9688fea116..02f3b0ff60de 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/reservation_sub_blocks/transports/rest_base.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/reservation_sub_blocks/transports/rest_base.py @@ -106,7 +106,7 @@ def _get_http_options(): http_options: List[Dict[str, str]] = [ { "method": "get", - "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks/{reservation_sub_block}", + "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks/{reservation_sub_block}", }, ] return http_options @@ -152,7 +152,7 @@ def _get_http_options(): http_options: List[Dict[str, str]] = [ { "method": "get", - "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_resource}/reservationSubBlocks/{resource}/getIamPolicy", + "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_resource=reservations/*/reservationBlocks/*}/reservationSubBlocks/{resource}/getIamPolicy", }, ] return http_options @@ -198,7 +198,7 @@ def _get_http_options(): http_options: List[Dict[str, str]] = [ { "method": "get", - "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks", + "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks", }, ] return http_options @@ -244,7 +244,7 @@ def _get_http_options(): http_options: List[Dict[str, str]] = [ { "method": "post", - "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks/{reservation_sub_block}/performMaintenance", + "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks/{reservation_sub_block}/performMaintenance", }, ] return http_options @@ -292,7 +292,7 @@ def _get_http_options(): http_options: List[Dict[str, str]] = [ { "method": "post", - "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks/{reservation_sub_block}/reportFaulty", + "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks/{reservation_sub_block}/reportFaulty", "body": "reservation_sub_blocks_report_faulty_request_resource", }, ] @@ -348,7 +348,7 @@ def _get_http_options(): http_options: List[Dict[str, str]] = [ { "method": "post", - "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_resource}/reservationSubBlocks/{resource}/setIamPolicy", + "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_resource=reservations/*/reservationBlocks/*}/reservationSubBlocks/{resource}/setIamPolicy", "body": "zone_set_nested_policy_request_resource", }, ] @@ -404,7 +404,7 @@ def _get_http_options(): http_options: List[Dict[str, str]] = [ { "method": "post", - "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_resource}/reservationSubBlocks/{resource}/testIamPermissions", + "uri": "/compute/beta/projects/{project}/zones/{zone}/{parent_resource=reservations/*/reservationBlocks/*}/reservationSubBlocks/{resource}/testIamPermissions", "body": "test_permissions_request_resource", }, ] diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/client.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/client.py index 18b88309913a..4097c5e727db 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/client.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/client.py @@ -1114,9 +1114,9 @@ def error_code(self): # Done; return the response. return response - def delete_route_policy_unary( + def delete_named_set_unary( self, - request: Optional[Union[compute.DeleteRoutePolicyRouterRequest, dict]] = None, + request: Optional[Union[compute.DeleteNamedSetRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, @@ -1125,7 +1125,7 @@ def delete_route_policy_unary( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> compute.Operation: - r"""Deletes Route Policy + r"""Deletes Named Set .. code-block:: python @@ -1138,28 +1138,28 @@ def delete_route_policy_unary( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_delete_route_policy(): + def sample_delete_named_set(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.DeleteRoutePolicyRouterRequest( + request = compute_v1beta.DeleteNamedSetRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.delete_route_policy(request=request) + response = client.delete_named_set(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.DeleteRoutePolicyRouterRequest, dict]): + request (Union[google.cloud.compute_v1beta.types.DeleteNamedSetRouterRequest, dict]): The request object. A request message for - Routers.DeleteRoutePolicy. See the - method description for details. + Routers.DeleteNamedSet. See the method + description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -1172,7 +1172,7 @@ def sample_delete_route_policy(): should not be set. router (str): Name of the Router resource where - Route Policy is defined. + Named Set is defined. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this @@ -1206,8 +1206,8 @@ def sample_delete_route_policy(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.DeleteRoutePolicyRouterRequest): - request = compute.DeleteRoutePolicyRouterRequest(request) + if not isinstance(request, compute.DeleteNamedSetRouterRequest): + request = compute.DeleteNamedSetRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -1219,7 +1219,7 @@ def sample_delete_route_policy(): # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.delete_route_policy] + rpc = self._transport._wrapped_methods[self._transport.delete_named_set] # Certain fields should be provided within the metadata header; # add these here. @@ -1247,9 +1247,9 @@ def sample_delete_route_policy(): # Done; return the response. return response - def delete_route_policy( + def delete_named_set( self, - request: Optional[Union[compute.DeleteRoutePolicyRouterRequest, dict]] = None, + request: Optional[Union[compute.DeleteNamedSetRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, @@ -1258,7 +1258,7 @@ def delete_route_policy( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> extended_operation.ExtendedOperation: - r"""Deletes Route Policy + r"""Deletes Named Set .. code-block:: python @@ -1271,28 +1271,28 @@ def delete_route_policy( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_delete_route_policy(): + def sample_delete_named_set(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.DeleteRoutePolicyRouterRequest( + request = compute_v1beta.DeleteNamedSetRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.delete_route_policy(request=request) + response = client.delete_named_set(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.DeleteRoutePolicyRouterRequest, dict]): + request (Union[google.cloud.compute_v1beta.types.DeleteNamedSetRouterRequest, dict]): The request object. A request message for - Routers.DeleteRoutePolicy. See the - method description for details. + Routers.DeleteNamedSet. See the method + description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -1305,7 +1305,7 @@ def sample_delete_route_policy(): should not be set. router (str): Name of the Router resource where - Route Policy is defined. + Named Set is defined. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this @@ -1339,8 +1339,8 @@ def sample_delete_route_policy(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.DeleteRoutePolicyRouterRequest): - request = compute.DeleteRoutePolicyRouterRequest(request) + if not isinstance(request, compute.DeleteNamedSetRouterRequest): + request = compute.DeleteNamedSetRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -1352,7 +1352,7 @@ def sample_delete_route_policy(): # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.delete_route_policy] + rpc = self._transport._wrapped_methods[self._transport.delete_named_set] # Certain fields should be provided within the metadata header; # add these here. @@ -1405,9 +1405,9 @@ def error_code(self): # Done; return the response. return response - def get( + def delete_route_policy_unary( self, - request: Optional[Union[compute.GetRouterRequest, dict]] = None, + request: Optional[Union[compute.DeleteRoutePolicyRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, @@ -1415,8 +1415,8 @@ def get( retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.Router: - r"""Returns the specified Router resource. + ) -> compute.Operation: + r"""Deletes Route Policy .. code-block:: python @@ -1429,27 +1429,28 @@ def get( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_get(): + def sample_delete_route_policy(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.GetRouterRequest( + request = compute_v1beta.DeleteRoutePolicyRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.get(request=request) + response = client.delete_route_policy(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.GetRouterRequest, dict]): - The request object. A request message for Routers.Get. - See the method description for details. + request (Union[google.cloud.compute_v1beta.types.DeleteRoutePolicyRouterRequest, dict]): + The request object. A request message for + Routers.DeleteRoutePolicy. See the + method description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -1461,8 +1462,8 @@ def sample_get(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource to - return. + Name of the Router resource where + Route Policy is defined. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this @@ -1476,11 +1477,9 @@ def sample_get(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.types.Router: - Represents a Cloud Router resource. - - For more information about Cloud Router, - read theCloud Router overview. + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. """ # Create or coerce a protobuf request object. @@ -1498,8 +1497,8 @@ def sample_get(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.GetRouterRequest): - request = compute.GetRouterRequest(request) + if not isinstance(request, compute.DeleteRoutePolicyRouterRequest): + request = compute.DeleteRoutePolicyRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -1511,7 +1510,7 @@ def sample_get(): # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.get] + rpc = self._transport._wrapped_methods[self._transport.delete_route_policy] # Certain fields should be provided within the metadata header; # add these here. @@ -1539,9 +1538,9 @@ def sample_get(): # Done; return the response. return response - def get_nat_ip_info( + def delete_route_policy( self, - request: Optional[Union[compute.GetNatIpInfoRouterRequest, dict]] = None, + request: Optional[Union[compute.DeleteRoutePolicyRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, @@ -1549,8 +1548,8 @@ def get_nat_ip_info( retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.NatIpInfoResponse: - r"""Retrieves runtime NAT IP information. + ) -> extended_operation.ExtendedOperation: + r"""Deletes Route Policy .. code-block:: python @@ -1563,28 +1562,28 @@ def get_nat_ip_info( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_get_nat_ip_info(): + def sample_delete_route_policy(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.GetNatIpInfoRouterRequest( + request = compute_v1beta.DeleteRoutePolicyRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.get_nat_ip_info(request=request) + response = client.delete_route_policy(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.GetNatIpInfoRouterRequest, dict]): + request (Union[google.cloud.compute_v1beta.types.DeleteRoutePolicyRouterRequest, dict]): The request object. A request message for - Routers.GetNatIpInfo. See the method - description for details. + Routers.DeleteRoutePolicy. See the + method description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -1596,9 +1595,8 @@ def sample_get_nat_ip_info(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource to query - for Nat IP information. The name should - conform to RFC1035. + Name of the Router resource where + Route Policy is defined. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this @@ -1612,7 +1610,9 @@ def sample_get_nat_ip_info(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.types.NatIpInfoResponse: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. """ # Create or coerce a protobuf request object. @@ -1630,8 +1630,8 @@ def sample_get_nat_ip_info(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.GetNatIpInfoRouterRequest): - request = compute.GetNatIpInfoRouterRequest(request) + if not isinstance(request, compute.DeleteRoutePolicyRouterRequest): + request = compute.DeleteRoutePolicyRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -1643,7 +1643,7 @@ def sample_get_nat_ip_info(): # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.get_nat_ip_info] + rpc = self._transport._wrapped_methods[self._transport.delete_route_policy] # Certain fields should be provided within the metadata header; # add these here. @@ -1668,12 +1668,37 @@ def sample_get_nat_ip_info(): metadata=metadata, ) + operation_service = self._transport._region_operations_client + operation_request = compute.GetRegionOperationRequest() + operation_request.project = request.project + operation_request.region = request.region + operation_request.operation = response.name + + get_operation = functools.partial(operation_service.get, operation_request) + # Cancel is not part of extended operations yet. + cancel_operation = lambda: None + + # Note: this class is an implementation detail to provide a uniform + # set of names for certain fields in the extended operation proto message. + # See google.api_core.extended_operation.ExtendedOperation for details + # on these properties and the expected interface. + class _CustomOperation(extended_operation.ExtendedOperation): + @property + def error_message(self): + return self._extended_operation.http_error_message + + @property + def error_code(self): + return self._extended_operation.http_error_status_code + + response = _CustomOperation.make(get_operation, cancel_operation, response) + # Done; return the response. return response - def get_nat_mapping_info( + def get( self, - request: Optional[Union[compute.GetNatMappingInfoRoutersRequest, dict]] = None, + request: Optional[Union[compute.GetRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, @@ -1681,9 +1706,8 @@ def get_nat_mapping_info( retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> pagers.GetNatMappingInfoPager: - r"""Retrieves runtime Nat mapping information of VM - endpoints. + ) -> compute.Router: + r"""Returns the specified Router resource. .. code-block:: python @@ -1696,29 +1720,27 @@ def get_nat_mapping_info( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_get_nat_mapping_info(): + def sample_get(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.GetNatMappingInfoRoutersRequest( + request = compute_v1beta.GetRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - page_result = client.get_nat_mapping_info(request=request) + response = client.get(request=request) # Handle the response - for response in page_result: - print(response) + print(response) Args: - request (Union[google.cloud.compute_v1beta.types.GetNatMappingInfoRoutersRequest, dict]): - The request object. A request message for - Routers.GetNatMappingInfo. See the - method description for details. + request (Union[google.cloud.compute_v1beta.types.GetRouterRequest, dict]): + The request object. A request message for Routers.Get. + See the method description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -1730,9 +1752,8 @@ def sample_get_nat_mapping_info(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource to query - for Nat Mapping information of VM - endpoints. + Name of the Router resource to + return. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this @@ -1746,12 +1767,11 @@ def sample_get_nat_mapping_info(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.services.routers.pagers.GetNatMappingInfoPager: - Contains a list of - VmEndpointNatMappings. - Iterating over this object will yield - results and resolve additional pages - automatically. + google.cloud.compute_v1beta.types.Router: + Represents a Cloud Router resource. + + For more information about Cloud Router, + read theCloud Router overview. """ # Create or coerce a protobuf request object. @@ -1769,8 +1789,8 @@ def sample_get_nat_mapping_info(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.GetNatMappingInfoRoutersRequest): - request = compute.GetNatMappingInfoRoutersRequest(request) + if not isinstance(request, compute.GetRouterRequest): + request = compute.GetRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -1782,7 +1802,7 @@ def sample_get_nat_mapping_info(): # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.get_nat_mapping_info] + rpc = self._transport._wrapped_methods[self._transport.get] # Certain fields should be provided within the metadata header; # add these here. @@ -1807,23 +1827,12 @@ def sample_get_nat_mapping_info(): metadata=metadata, ) - # This method is paged; wrap the response in a pager, which provides - # an `__iter__` convenience method. - response = pagers.GetNatMappingInfoPager( - method=rpc, - request=request, - response=response, - retry=retry, - timeout=timeout, - metadata=metadata, - ) - # Done; return the response. return response - def get_route_policy( + def get_named_set( self, - request: Optional[Union[compute.GetRoutePolicyRouterRequest, dict]] = None, + request: Optional[Union[compute.GetNamedSetRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, @@ -1831,8 +1840,8 @@ def get_route_policy( retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.RoutersGetRoutePolicyResponse: - r"""Returns specified Route Policy + ) -> compute.RoutersGetNamedSetResponse: + r"""Returns specified Named Set .. code-block:: python @@ -1845,27 +1854,27 @@ def get_route_policy( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_get_route_policy(): + def sample_get_named_set(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.GetRoutePolicyRouterRequest( + request = compute_v1beta.GetNamedSetRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.get_route_policy(request=request) + response = client.get_named_set(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.GetRoutePolicyRouterRequest, dict]): + request (Union[google.cloud.compute_v1beta.types.GetNamedSetRouterRequest, dict]): The request object. A request message for - Routers.GetRoutePolicy. See the method + Routers.GetNamedSet. See the method description for details. project (str): Project ID for this request. @@ -1879,7 +1888,7 @@ def sample_get_route_policy(): should not be set. router (str): Name of the Router resource to query - for the route policy. The name should + for the named set. The name should conform to RFC1035. This corresponds to the ``router`` field @@ -1894,7 +1903,7 @@ def sample_get_route_policy(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.types.RoutersGetRoutePolicyResponse: + google.cloud.compute_v1beta.types.RoutersGetNamedSetResponse: """ # Create or coerce a protobuf request object. @@ -1912,8 +1921,8 @@ def sample_get_route_policy(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.GetRoutePolicyRouterRequest): - request = compute.GetRoutePolicyRouterRequest(request) + if not isinstance(request, compute.GetNamedSetRouterRequest): + request = compute.GetNamedSetRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -1925,7 +1934,7 @@ def sample_get_route_policy(): # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.get_route_policy] + rpc = self._transport._wrapped_methods[self._transport.get_named_set] # Certain fields should be provided within the metadata header; # add these here. @@ -1953,9 +1962,9 @@ def sample_get_route_policy(): # Done; return the response. return response - def get_router_status( + def get_nat_ip_info( self, - request: Optional[Union[compute.GetRouterStatusRouterRequest, dict]] = None, + request: Optional[Union[compute.GetNatIpInfoRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, @@ -1963,9 +1972,8 @@ def get_router_status( retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.RouterStatusResponse: - r"""Retrieves runtime information of the specified - router. + ) -> compute.NatIpInfoResponse: + r"""Retrieves runtime NAT IP information. .. code-block:: python @@ -1978,27 +1986,27 @@ def get_router_status( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_get_router_status(): + def sample_get_nat_ip_info(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.GetRouterStatusRouterRequest( + request = compute_v1beta.GetNatIpInfoRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.get_router_status(request=request) + response = client.get_nat_ip_info(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.GetRouterStatusRouterRequest, dict]): + request (Union[google.cloud.compute_v1beta.types.GetNatIpInfoRouterRequest, dict]): The request object. A request message for - Routers.GetRouterStatus. See the method + Routers.GetNatIpInfo. See the method description for details. project (str): Project ID for this request. @@ -2011,7 +2019,10 @@ def sample_get_router_status(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource to query. + Name of the Router resource to query + for Nat IP information. The name should + conform to RFC1035. + This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. @@ -2024,7 +2035,7 @@ def sample_get_router_status(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.types.RouterStatusResponse: + google.cloud.compute_v1beta.types.NatIpInfoResponse: """ # Create or coerce a protobuf request object. @@ -2042,8 +2053,8 @@ def sample_get_router_status(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.GetRouterStatusRouterRequest): - request = compute.GetRouterStatusRouterRequest(request) + if not isinstance(request, compute.GetNatIpInfoRouterRequest): + request = compute.GetNatIpInfoRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -2055,7 +2066,7 @@ def sample_get_router_status(): # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.get_router_status] + rpc = self._transport._wrapped_methods[self._transport.get_nat_ip_info] # Certain fields should be provided within the metadata header; # add these here. @@ -2083,19 +2094,19 @@ def sample_get_router_status(): # Done; return the response. return response - def insert_unary( + def get_nat_mapping_info( self, - request: Optional[Union[compute.InsertRouterRequest, dict]] = None, + request: Optional[Union[compute.GetNatMappingInfoRoutersRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, - router_resource: Optional[compute.Router] = None, + router: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.Operation: - r"""Creates a Router resource in the specified project - and region using the data included in the request. + ) -> pagers.GetNatMappingInfoPager: + r"""Retrieves runtime Nat mapping information of VM + endpoints. .. code-block:: python @@ -2108,26 +2119,1154 @@ def insert_unary( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_insert(): + def sample_get_nat_mapping_info(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.InsertRouterRequest( + request = compute_v1beta.GetNatMappingInfoRoutersRequest( project="project_value", region="region_value", + router="router_value", ) # Make the request - response = client.insert(request=request) + page_result = client.get_nat_mapping_info(request=request) # Handle the response - print(response) + for response in page_result: + print(response) Args: - request (Union[google.cloud.compute_v1beta.types.InsertRouterRequest, dict]): - The request object. A request message for Routers.Insert. - See the method description for details. + request (Union[google.cloud.compute_v1beta.types.GetNatMappingInfoRoutersRequest, dict]): + The request object. A request message for + Routers.GetNatMappingInfo. See the + method description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + region (str): + Name of the region for this request. + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + router (str): + Name of the Router resource to query + for Nat Mapping information of VM + endpoints. + + This corresponds to the ``router`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.services.routers.pagers.GetNatMappingInfoPager: + Contains a list of + VmEndpointNatMappings. + Iterating over this object will yield + results and resolve additional pages + automatically. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, region, router] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.GetNatMappingInfoRoutersRequest): + request = compute.GetNatMappingInfoRoutersRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if region is not None: + request.region = region + if router is not None: + request.router = router + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_nat_mapping_info] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("region", request.region), + ("router", request.router), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.GetNatMappingInfoPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def get_route_policy( + self, + request: Optional[Union[compute.GetRoutePolicyRouterRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + router: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.RoutersGetRoutePolicyResponse: + r"""Returns specified Route Policy + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_get_route_policy(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.GetRoutePolicyRouterRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + response = client.get_route_policy(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.GetRoutePolicyRouterRequest, dict]): + The request object. A request message for + Routers.GetRoutePolicy. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + region (str): + Name of the region for this request. + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + router (str): + Name of the Router resource to query + for the route policy. The name should + conform to RFC1035. + + This corresponds to the ``router`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.types.RoutersGetRoutePolicyResponse: + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, region, router] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.GetRoutePolicyRouterRequest): + request = compute.GetRoutePolicyRouterRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if region is not None: + request.region = region + if router is not None: + request.router = router + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_route_policy] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("region", request.region), + ("router", request.router), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def get_router_status( + self, + request: Optional[Union[compute.GetRouterStatusRouterRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + router: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.RouterStatusResponse: + r"""Retrieves runtime information of the specified + router. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_get_router_status(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.GetRouterStatusRouterRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + response = client.get_router_status(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.GetRouterStatusRouterRequest, dict]): + The request object. A request message for + Routers.GetRouterStatus. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + region (str): + Name of the region for this request. + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + router (str): + Name of the Router resource to query. + This corresponds to the ``router`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.types.RouterStatusResponse: + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, region, router] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.GetRouterStatusRouterRequest): + request = compute.GetRouterStatusRouterRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if region is not None: + request.region = region + if router is not None: + request.router = router + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_router_status] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("region", request.region), + ("router", request.router), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def insert_unary( + self, + request: Optional[Union[compute.InsertRouterRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + router_resource: Optional[compute.Router] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Creates a Router resource in the specified project + and region using the data included in the request. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_insert(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.InsertRouterRequest( + project="project_value", + region="region_value", + ) + + # Make the request + response = client.insert(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.InsertRouterRequest, dict]): + The request object. A request message for Routers.Insert. + See the method description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + region (str): + Name of the region for this request. + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + router_resource (google.cloud.compute_v1beta.types.Router): + The body resource for this request + This corresponds to the ``router_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, region, router_resource] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.InsertRouterRequest): + request = compute.InsertRouterRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if region is not None: + request.region = region + if router_resource is not None: + request.router_resource = router_resource + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.insert] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("region", request.region), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def insert( + self, + request: Optional[Union[compute.InsertRouterRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + router_resource: Optional[compute.Router] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> extended_operation.ExtendedOperation: + r"""Creates a Router resource in the specified project + and region using the data included in the request. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_insert(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.InsertRouterRequest( + project="project_value", + region="region_value", + ) + + # Make the request + response = client.insert(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.InsertRouterRequest, dict]): + The request object. A request message for Routers.Insert. + See the method description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + region (str): + Name of the region for this request. + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + router_resource (google.cloud.compute_v1beta.types.Router): + The body resource for this request + This corresponds to the ``router_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, region, router_resource] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.InsertRouterRequest): + request = compute.InsertRouterRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if region is not None: + request.region = region + if router_resource is not None: + request.router_resource = router_resource + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.insert] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("region", request.region), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + operation_service = self._transport._region_operations_client + operation_request = compute.GetRegionOperationRequest() + operation_request.project = request.project + operation_request.region = request.region + operation_request.operation = response.name + + get_operation = functools.partial(operation_service.get, operation_request) + # Cancel is not part of extended operations yet. + cancel_operation = lambda: None + + # Note: this class is an implementation detail to provide a uniform + # set of names for certain fields in the extended operation proto message. + # See google.api_core.extended_operation.ExtendedOperation for details + # on these properties and the expected interface. + class _CustomOperation(extended_operation.ExtendedOperation): + @property + def error_message(self): + return self._extended_operation.http_error_message + + @property + def error_code(self): + return self._extended_operation.http_error_status_code + + response = _CustomOperation.make(get_operation, cancel_operation, response) + + # Done; return the response. + return response + + def list( + self, + request: Optional[Union[compute.ListRoutersRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> pagers.ListPager: + r"""Retrieves a list of Router resources available to the + specified project. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_list(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.ListRoutersRequest( + project="project_value", + region="region_value", + ) + + # Make the request + page_result = client.list(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.ListRoutersRequest, dict]): + The request object. A request message for Routers.List. + See the method description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + region (str): + Name of the region for this request. + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.services.routers.pagers.ListPager: + Contains a list of Router resources. + + Iterating over this object will yield + results and resolve additional pages + automatically. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, region] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.ListRoutersRequest): + request = compute.ListRoutersRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if region is not None: + request.region = region + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.list] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("region", request.region), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.ListPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def list_bgp_routes( + self, + request: Optional[Union[compute.ListBgpRoutesRoutersRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + router: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> pagers.ListBgpRoutesPager: + r"""Retrieves a list of router bgp routes available to + the specified project. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_list_bgp_routes(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.ListBgpRoutesRoutersRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + page_result = client.list_bgp_routes(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.ListBgpRoutesRoutersRequest, dict]): + The request object. A request message for + Routers.ListBgpRoutes. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + region (str): + Name of the region for this request. + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + router (str): + Name or id of the resource for this + request. Name should conform to RFC1035. + + This corresponds to the ``router`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.services.routers.pagers.ListBgpRoutesPager: + Iterating over this object will yield + results and resolve additional pages + automatically. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, region, router] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.ListBgpRoutesRoutersRequest): + request = compute.ListBgpRoutesRoutersRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if region is not None: + request.region = region + if router is not None: + request.router = router + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.list_bgp_routes] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("region", request.region), + ("router", request.router), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.ListBgpRoutesPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def list_named_sets( + self, + request: Optional[Union[compute.ListNamedSetsRoutersRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + router: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> pagers.ListNamedSetsPager: + r"""Retrieves a list of router named set subresources + available to the specified project. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_list_named_sets(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.ListNamedSetsRoutersRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + page_result = client.list_named_sets(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.ListNamedSetsRoutersRequest, dict]): + The request object. A request message for + Routers.ListNamedSets. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + region (str): + Name of the region for this request. + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + router (str): + Name or id of the resource for this + request. Name should conform to RFC1035. + + This corresponds to the ``router`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.services.routers.pagers.ListNamedSetsPager: + Iterating over this object will yield + results and resolve additional pages + automatically. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, region, router] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.ListNamedSetsRoutersRequest): + request = compute.ListNamedSetsRoutersRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if region is not None: + request.region = region + if router is not None: + request.router = router + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.list_named_sets] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("region", request.region), + ("router", request.router), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.ListNamedSetsPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def list_route_policies( + self, + request: Optional[Union[compute.ListRoutePoliciesRoutersRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + router: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> pagers.ListRoutePoliciesPager: + r"""Retrieves a list of router route policy subresources + available to the specified project. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_list_route_policies(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.ListRoutePoliciesRoutersRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + page_result = client.list_route_policies(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.ListRoutePoliciesRoutersRequest, dict]): + The request object. A request message for + Routers.ListRoutePolicies. See the + method description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -2138,9 +3277,11 @@ def sample_insert(): This corresponds to the ``region`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - router_resource (google.cloud.compute_v1beta.types.Router): - The body resource for this request - This corresponds to the ``router_resource`` field + router (str): + Name or id of the resource for this + request. Name should conform to RFC1035. + + This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -2152,15 +3293,16 @@ def sample_insert(): be of type `bytes`. Returns: - google.api_core.extended_operation.ExtendedOperation: - An object representing a extended - long-running operation. + google.cloud.compute_v1beta.services.routers.pagers.ListRoutePoliciesPager: + Iterating over this object will yield + results and resolve additional pages + automatically. """ # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router_resource] + flattened_params = [project, region, router] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2172,20 +3314,20 @@ def sample_insert(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.InsertRouterRequest): - request = compute.InsertRouterRequest(request) + if not isinstance(request, compute.ListRoutePoliciesRoutersRequest): + request = compute.ListRoutePoliciesRoutersRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: request.project = project if region is not None: request.region = region - if router_resource is not None: - request.router_resource = router_resource + if router is not None: + request.router = router # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.insert] + rpc = self._transport._wrapped_methods[self._transport.list_route_policies] # Certain fields should be provided within the metadata header; # add these here. @@ -2194,6 +3336,7 @@ def sample_insert(): ( ("project", request.project), ("region", request.region), + ("router", request.router), ) ), ) @@ -2209,22 +3352,36 @@ def sample_insert(): metadata=metadata, ) + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.ListRoutePoliciesPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + # Done; return the response. return response - def insert( + def patch_unary( self, - request: Optional[Union[compute.InsertRouterRequest, dict]] = None, + request: Optional[Union[compute.PatchRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, + router: Optional[str] = None, router_resource: Optional[compute.Router] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> extended_operation.ExtendedOperation: - r"""Creates a Router resource in the specified project - and region using the data included in the request. + ) -> compute.Operation: + r"""Patches the specified Router resource with the data + included in the request. This method supportsPATCH + semantics and usesJSON merge + patch format and processing rules. .. code-block:: python @@ -2237,25 +3394,26 @@ def insert( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_insert(): + def sample_patch(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.InsertRouterRequest( + request = compute_v1beta.PatchRouterRequest( project="project_value", region="region_value", + router="router_value", ) # Make the request - response = client.insert(request=request) + response = client.patch(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.InsertRouterRequest, dict]): - The request object. A request message for Routers.Insert. + request (Union[google.cloud.compute_v1beta.types.PatchRouterRequest, dict]): + The request object. A request message for Routers.Patch. See the method description for details. project (str): Project ID for this request. @@ -2267,6 +3425,11 @@ def sample_insert(): This corresponds to the ``region`` field on the ``request`` instance; if ``request`` is provided, this should not be set. + router (str): + Name of the Router resource to patch. + This corresponds to the ``router`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. router_resource (google.cloud.compute_v1beta.types.Router): The body resource for this request This corresponds to the ``router_resource`` field @@ -2289,7 +3452,7 @@ def sample_insert(): # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router_resource] + flattened_params = [project, region, router, router_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2301,20 +3464,22 @@ def sample_insert(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.InsertRouterRequest): - request = compute.InsertRouterRequest(request) + if not isinstance(request, compute.PatchRouterRequest): + request = compute.PatchRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: request.project = project if region is not None: request.region = region + if router is not None: + request.router = router if router_resource is not None: request.router_resource = router_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.insert] + rpc = self._transport._wrapped_methods[self._transport.patch] # Certain fields should be provided within the metadata header; # add these here. @@ -2323,6 +3488,7 @@ def sample_insert(): ( ("project", request.project), ("region", request.region), + ("router", request.router), ) ), ) @@ -2338,46 +3504,25 @@ def sample_insert(): metadata=metadata, ) - operation_service = self._transport._region_operations_client - operation_request = compute.GetRegionOperationRequest() - operation_request.project = request.project - operation_request.region = request.region - operation_request.operation = response.name - - get_operation = functools.partial(operation_service.get, operation_request) - # Cancel is not part of extended operations yet. - cancel_operation = lambda: None - - # Note: this class is an implementation detail to provide a uniform - # set of names for certain fields in the extended operation proto message. - # See google.api_core.extended_operation.ExtendedOperation for details - # on these properties and the expected interface. - class _CustomOperation(extended_operation.ExtendedOperation): - @property - def error_message(self): - return self._extended_operation.http_error_message - - @property - def error_code(self): - return self._extended_operation.http_error_status_code - - response = _CustomOperation.make(get_operation, cancel_operation, response) - # Done; return the response. return response - def list( + def patch( self, - request: Optional[Union[compute.ListRoutersRequest, dict]] = None, + request: Optional[Union[compute.PatchRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, + router: Optional[str] = None, + router_resource: Optional[compute.Router] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> pagers.ListPager: - r"""Retrieves a list of Router resources available to the - specified project. + ) -> extended_operation.ExtendedOperation: + r"""Patches the specified Router resource with the data + included in the request. This method supportsPATCH + semantics and usesJSON merge + patch format and processing rules. .. code-block:: python @@ -2390,26 +3535,26 @@ def list( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_list(): + def sample_patch(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.ListRoutersRequest( + request = compute_v1beta.PatchRouterRequest( project="project_value", region="region_value", + router="router_value", ) # Make the request - page_result = client.list(request=request) + response = client.patch(request=request) # Handle the response - for response in page_result: - print(response) + print(response) Args: - request (Union[google.cloud.compute_v1beta.types.ListRoutersRequest, dict]): - The request object. A request message for Routers.List. + request (Union[google.cloud.compute_v1beta.types.PatchRouterRequest, dict]): + The request object. A request message for Routers.Patch. See the method description for details. project (str): Project ID for this request. @@ -2421,6 +3566,16 @@ def sample_list(): This corresponds to the ``region`` field on the ``request`` instance; if ``request`` is provided, this should not be set. + router (str): + Name of the Router resource to patch. + This corresponds to the ``router`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + router_resource (google.cloud.compute_v1beta.types.Router): + The body resource for this request + This corresponds to the ``router_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2430,18 +3585,15 @@ def sample_list(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.services.routers.pagers.ListPager: - Contains a list of Router resources. - - Iterating over this object will yield - results and resolve additional pages - automatically. + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. """ # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region] + flattened_params = [project, region, router, router_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2453,18 +3605,22 @@ def sample_list(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.ListRoutersRequest): - request = compute.ListRoutersRequest(request) + if not isinstance(request, compute.PatchRouterRequest): + request = compute.PatchRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: request.project = project if region is not None: request.region = region + if router is not None: + request.router = router + if router_resource is not None: + request.router_resource = router_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.list] + rpc = self._transport._wrapped_methods[self._transport.patch] # Certain fields should be provided within the metadata header; # add these here. @@ -2473,6 +3629,7 @@ def sample_list(): ( ("project", request.project), ("region", request.region), + ("router", request.router), ) ), ) @@ -2488,33 +3645,47 @@ def sample_list(): metadata=metadata, ) - # This method is paged; wrap the response in a pager, which provides - # an `__iter__` convenience method. - response = pagers.ListPager( - method=rpc, - request=request, - response=response, - retry=retry, - timeout=timeout, - metadata=metadata, - ) + operation_service = self._transport._region_operations_client + operation_request = compute.GetRegionOperationRequest() + operation_request.project = request.project + operation_request.region = request.region + operation_request.operation = response.name + + get_operation = functools.partial(operation_service.get, operation_request) + # Cancel is not part of extended operations yet. + cancel_operation = lambda: None + + # Note: this class is an implementation detail to provide a uniform + # set of names for certain fields in the extended operation proto message. + # See google.api_core.extended_operation.ExtendedOperation for details + # on these properties and the expected interface. + class _CustomOperation(extended_operation.ExtendedOperation): + @property + def error_message(self): + return self._extended_operation.http_error_message + + @property + def error_code(self): + return self._extended_operation.http_error_status_code + + response = _CustomOperation.make(get_operation, cancel_operation, response) # Done; return the response. return response - def list_bgp_routes( + def patch_named_set_unary( self, - request: Optional[Union[compute.ListBgpRoutesRoutersRequest, dict]] = None, + request: Optional[Union[compute.PatchNamedSetRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, router: Optional[str] = None, + named_set_resource: Optional[compute.NamedSet] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> pagers.ListBgpRoutesPager: - r"""Retrieves a list of router bgp routes available to - the specified project. + ) -> compute.Operation: + r"""Patches Named Set .. code-block:: python @@ -2527,28 +3698,27 @@ def list_bgp_routes( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_list_bgp_routes(): + def sample_patch_named_set(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.ListBgpRoutesRoutersRequest( + request = compute_v1beta.PatchNamedSetRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - page_result = client.list_bgp_routes(request=request) + response = client.patch_named_set(request=request) # Handle the response - for response in page_result: - print(response) + print(response) Args: - request (Union[google.cloud.compute_v1beta.types.ListBgpRoutesRoutersRequest, dict]): + request (Union[google.cloud.compute_v1beta.types.PatchNamedSetRouterRequest, dict]): The request object. A request message for - Routers.ListBgpRoutes. See the method + Routers.PatchNamedSet. See the method description for details. project (str): Project ID for this request. @@ -2561,12 +3731,17 @@ def sample_list_bgp_routes(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name or id of the resource for this - request. Name should conform to RFC1035. + Name of the Router resource where + Named Set is defined. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. + named_set_resource (google.cloud.compute_v1beta.types.NamedSet): + The body resource for this request + This corresponds to the ``named_set_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2576,16 +3751,15 @@ def sample_list_bgp_routes(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.services.routers.pagers.ListBgpRoutesPager: - Iterating over this object will yield - results and resolve additional pages - automatically. + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. """ # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router] + flattened_params = [project, region, router, named_set_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2597,8 +3771,8 @@ def sample_list_bgp_routes(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.ListBgpRoutesRoutersRequest): - request = compute.ListBgpRoutesRoutersRequest(request) + if not isinstance(request, compute.PatchNamedSetRouterRequest): + request = compute.PatchNamedSetRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -2607,10 +3781,12 @@ def sample_list_bgp_routes(): request.region = region if router is not None: request.router = router + if named_set_resource is not None: + request.named_set_resource = named_set_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.list_bgp_routes] + rpc = self._transport._wrapped_methods[self._transport.patch_named_set] # Certain fields should be provided within the metadata header; # add these here. @@ -2625,22 +3801,11 @@ def sample_list_bgp_routes(): ) # Validate the universe domain. - self._validate_universe_domain() - - # Send the request. - response = rpc( - request, - retry=retry, - timeout=timeout, - metadata=metadata, - ) - - # This method is paged; wrap the response in a pager, which provides - # an `__iter__` convenience method. - response = pagers.ListBgpRoutesPager( - method=rpc, - request=request, - response=response, + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, retry=retry, timeout=timeout, metadata=metadata, @@ -2649,19 +3814,19 @@ def sample_list_bgp_routes(): # Done; return the response. return response - def list_route_policies( + def patch_named_set( self, - request: Optional[Union[compute.ListRoutePoliciesRoutersRequest, dict]] = None, + request: Optional[Union[compute.PatchNamedSetRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, router: Optional[str] = None, + named_set_resource: Optional[compute.NamedSet] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> pagers.ListRoutePoliciesPager: - r"""Retrieves a list of router route policy subresources - available to the specified project. + ) -> extended_operation.ExtendedOperation: + r"""Patches Named Set .. code-block:: python @@ -2674,29 +3839,28 @@ def list_route_policies( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_list_route_policies(): + def sample_patch_named_set(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.ListRoutePoliciesRoutersRequest( + request = compute_v1beta.PatchNamedSetRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - page_result = client.list_route_policies(request=request) + response = client.patch_named_set(request=request) # Handle the response - for response in page_result: - print(response) + print(response) Args: - request (Union[google.cloud.compute_v1beta.types.ListRoutePoliciesRoutersRequest, dict]): + request (Union[google.cloud.compute_v1beta.types.PatchNamedSetRouterRequest, dict]): The request object. A request message for - Routers.ListRoutePolicies. See the - method description for details. + Routers.PatchNamedSet. See the method + description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -2708,12 +3872,17 @@ def sample_list_route_policies(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name or id of the resource for this - request. Name should conform to RFC1035. + Name of the Router resource where + Named Set is defined. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. + named_set_resource (google.cloud.compute_v1beta.types.NamedSet): + The body resource for this request + This corresponds to the ``named_set_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2723,16 +3892,15 @@ def sample_list_route_policies(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.services.routers.pagers.ListRoutePoliciesPager: - Iterating over this object will yield - results and resolve additional pages - automatically. + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. """ # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router] + flattened_params = [project, region, router, named_set_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2744,8 +3912,8 @@ def sample_list_route_policies(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.ListRoutePoliciesRoutersRequest): - request = compute.ListRoutePoliciesRoutersRequest(request) + if not isinstance(request, compute.PatchNamedSetRouterRequest): + request = compute.PatchNamedSetRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -2754,10 +3922,12 @@ def sample_list_route_policies(): request.region = region if router is not None: request.router = router + if named_set_resource is not None: + request.named_set_resource = named_set_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.list_route_policies] + rpc = self._transport._wrapped_methods[self._transport.patch_named_set] # Certain fields should be provided within the metadata header; # add these here. @@ -2782,36 +3952,47 @@ def sample_list_route_policies(): metadata=metadata, ) - # This method is paged; wrap the response in a pager, which provides - # an `__iter__` convenience method. - response = pagers.ListRoutePoliciesPager( - method=rpc, - request=request, - response=response, - retry=retry, - timeout=timeout, - metadata=metadata, - ) + operation_service = self._transport._region_operations_client + operation_request = compute.GetRegionOperationRequest() + operation_request.project = request.project + operation_request.region = request.region + operation_request.operation = response.name + + get_operation = functools.partial(operation_service.get, operation_request) + # Cancel is not part of extended operations yet. + cancel_operation = lambda: None + + # Note: this class is an implementation detail to provide a uniform + # set of names for certain fields in the extended operation proto message. + # See google.api_core.extended_operation.ExtendedOperation for details + # on these properties and the expected interface. + class _CustomOperation(extended_operation.ExtendedOperation): + @property + def error_message(self): + return self._extended_operation.http_error_message + + @property + def error_code(self): + return self._extended_operation.http_error_status_code + + response = _CustomOperation.make(get_operation, cancel_operation, response) # Done; return the response. return response - def patch_unary( + def patch_route_policy_unary( self, - request: Optional[Union[compute.PatchRouterRequest, dict]] = None, + request: Optional[Union[compute.PatchRoutePolicyRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, router: Optional[str] = None, - router_resource: Optional[compute.Router] = None, + route_policy_resource: Optional[compute.RoutePolicy] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> compute.Operation: - r"""Patches the specified Router resource with the data - included in the request. This method supportsPATCH - semantics and usesJSON merge - patch format and processing rules. + r"""Patches Route Policy .. code-block:: python @@ -2824,27 +4005,28 @@ def patch_unary( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_patch(): + def sample_patch_route_policy(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.PatchRouterRequest( + request = compute_v1beta.PatchRoutePolicyRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.patch(request=request) + response = client.patch_route_policy(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.PatchRouterRequest, dict]): - The request object. A request message for Routers.Patch. - See the method description for details. + request (Union[google.cloud.compute_v1beta.types.PatchRoutePolicyRouterRequest, dict]): + The request object. A request message for + Routers.PatchRoutePolicy. See the method + description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -2856,13 +4038,15 @@ def sample_patch(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource to patch. + Name of the Router resource where + Route Policy is defined. + This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - router_resource (google.cloud.compute_v1beta.types.Router): + route_policy_resource (google.cloud.compute_v1beta.types.RoutePolicy): The body resource for this request - This corresponds to the ``router_resource`` field + This corresponds to the ``route_policy_resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -2882,7 +4066,7 @@ def sample_patch(): # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router, router_resource] + flattened_params = [project, region, router, route_policy_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2894,8 +4078,8 @@ def sample_patch(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.PatchRouterRequest): - request = compute.PatchRouterRequest(request) + if not isinstance(request, compute.PatchRoutePolicyRouterRequest): + request = compute.PatchRoutePolicyRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -2904,12 +4088,12 @@ def sample_patch(): request.region = region if router is not None: request.router = router - if router_resource is not None: - request.router_resource = router_resource + if route_policy_resource is not None: + request.route_policy_resource = route_policy_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.patch] + rpc = self._transport._wrapped_methods[self._transport.patch_route_policy] # Certain fields should be provided within the metadata header; # add these here. @@ -2937,22 +4121,19 @@ def sample_patch(): # Done; return the response. return response - def patch( + def patch_route_policy( self, - request: Optional[Union[compute.PatchRouterRequest, dict]] = None, + request: Optional[Union[compute.PatchRoutePolicyRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, router: Optional[str] = None, - router_resource: Optional[compute.Router] = None, + route_policy_resource: Optional[compute.RoutePolicy] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> extended_operation.ExtendedOperation: - r"""Patches the specified Router resource with the data - included in the request. This method supportsPATCH - semantics and usesJSON merge - patch format and processing rules. + r"""Patches Route Policy .. code-block:: python @@ -2965,27 +4146,28 @@ def patch( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_patch(): + def sample_patch_route_policy(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.PatchRouterRequest( + request = compute_v1beta.PatchRoutePolicyRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.patch(request=request) + response = client.patch_route_policy(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.PatchRouterRequest, dict]): - The request object. A request message for Routers.Patch. - See the method description for details. + request (Union[google.cloud.compute_v1beta.types.PatchRoutePolicyRouterRequest, dict]): + The request object. A request message for + Routers.PatchRoutePolicy. See the method + description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -2997,13 +4179,15 @@ def sample_patch(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource to patch. + Name of the Router resource where + Route Policy is defined. + This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - router_resource (google.cloud.compute_v1beta.types.Router): + route_policy_resource (google.cloud.compute_v1beta.types.RoutePolicy): The body resource for this request - This corresponds to the ``router_resource`` field + This corresponds to the ``route_policy_resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -3023,7 +4207,7 @@ def sample_patch(): # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router, router_resource] + flattened_params = [project, region, router, route_policy_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -3035,8 +4219,8 @@ def sample_patch(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.PatchRouterRequest): - request = compute.PatchRouterRequest(request) + if not isinstance(request, compute.PatchRoutePolicyRouterRequest): + request = compute.PatchRoutePolicyRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -3045,12 +4229,12 @@ def sample_patch(): request.region = region if router is not None: request.router = router - if router_resource is not None: - request.router_resource = router_resource + if route_policy_resource is not None: + request.route_policy_resource = route_policy_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.patch] + rpc = self._transport._wrapped_methods[self._transport.patch_route_policy] # Certain fields should be provided within the metadata header; # add these here. @@ -3103,19 +4287,21 @@ def error_code(self): # Done; return the response. return response - def patch_route_policy_unary( + def preview( self, - request: Optional[Union[compute.PatchRoutePolicyRouterRequest, dict]] = None, + request: Optional[Union[compute.PreviewRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, router: Optional[str] = None, - route_policy_resource: Optional[compute.RoutePolicy] = None, + router_resource: Optional[compute.Router] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.Operation: - r"""Patches Route Policy + ) -> compute.RoutersPreviewResponse: + r"""Preview fields auto-generated during router create + andupdate operations. Calling this method does NOT + create or update the router. .. code-block:: python @@ -3128,27 +4314,27 @@ def patch_route_policy_unary( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_patch_route_policy(): + def sample_preview(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.PatchRoutePolicyRouterRequest( + request = compute_v1beta.PreviewRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.patch_route_policy(request=request) + response = client.preview(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.PatchRoutePolicyRouterRequest, dict]): + request (Union[google.cloud.compute_v1beta.types.PreviewRouterRequest, dict]): The request object. A request message for - Routers.PatchRoutePolicy. See the method + Routers.Preview. See the method description for details. project (str): Project ID for this request. @@ -3161,15 +4347,13 @@ def sample_patch_route_policy(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource where - Route Policy is defined. - + Name of the Router resource to query. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - route_policy_resource (google.cloud.compute_v1beta.types.RoutePolicy): + router_resource (google.cloud.compute_v1beta.types.Router): The body resource for this request - This corresponds to the ``route_policy_resource`` field + This corresponds to the ``router_resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -3181,15 +4365,13 @@ def sample_patch_route_policy(): be of type `bytes`. Returns: - google.api_core.extended_operation.ExtendedOperation: - An object representing a extended - long-running operation. + google.cloud.compute_v1beta.types.RoutersPreviewResponse: """ # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router, route_policy_resource] + flattened_params = [project, region, router, router_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -3201,8 +4383,8 @@ def sample_patch_route_policy(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.PatchRoutePolicyRouterRequest): - request = compute.PatchRoutePolicyRouterRequest(request) + if not isinstance(request, compute.PreviewRouterRequest): + request = compute.PreviewRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -3211,12 +4393,12 @@ def sample_patch_route_policy(): request.region = region if router is not None: request.router = router - if route_policy_resource is not None: - request.route_policy_resource = route_policy_resource + if router_resource is not None: + request.router_resource = router_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.patch_route_policy] + rpc = self._transport._wrapped_methods[self._transport.preview] # Certain fields should be provided within the metadata header; # add these here. @@ -3244,19 +4426,22 @@ def sample_patch_route_policy(): # Done; return the response. return response - def patch_route_policy( + def test_iam_permissions( self, - request: Optional[Union[compute.PatchRoutePolicyRouterRequest, dict]] = None, + request: Optional[Union[compute.TestIamPermissionsRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, - router: Optional[str] = None, - route_policy_resource: Optional[compute.RoutePolicy] = None, + resource: Optional[str] = None, + test_permissions_request_resource: Optional[ + compute.TestPermissionsRequest + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> extended_operation.ExtendedOperation: - r"""Patches Route Policy + ) -> compute.TestPermissionsResponse: + r"""Returns permissions that a caller has on the + specified resource. .. code-block:: python @@ -3269,48 +4454,50 @@ def patch_route_policy( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_patch_route_policy(): + def sample_test_iam_permissions(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.PatchRoutePolicyRouterRequest( + request = compute_v1beta.TestIamPermissionsRouterRequest( project="project_value", region="region_value", - router="router_value", + resource="resource_value", ) # Make the request - response = client.patch_route_policy(request=request) + response = client.test_iam_permissions(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.PatchRoutePolicyRouterRequest, dict]): + request (Union[google.cloud.compute_v1beta.types.TestIamPermissionsRouterRequest, dict]): The request object. A request message for - Routers.PatchRoutePolicy. See the method - description for details. + Routers.TestIamPermissions. See the + method description for details. project (str): Project ID for this request. This corresponds to the ``project`` field on the ``request`` instance; if ``request`` is provided, this should not be set. region (str): - Name of the region for this request. + The name of the region for this + request. + This corresponds to the ``region`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - router (str): - Name of the Router resource where - Route Policy is defined. + resource (str): + Name or id of the resource for this + request. - This corresponds to the ``router`` field + This corresponds to the ``resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - route_policy_resource (google.cloud.compute_v1beta.types.RoutePolicy): + test_permissions_request_resource (google.cloud.compute_v1beta.types.TestPermissionsRequest): The body resource for this request - This corresponds to the ``route_policy_resource`` field + This corresponds to the ``test_permissions_request_resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -3321,16 +4508,19 @@ def sample_patch_route_policy(): but for metadata keys ending with the suffix `-bin`, the corresponding values must be of type `bytes`. - Returns: - google.api_core.extended_operation.ExtendedOperation: - An object representing a extended - long-running operation. - + Returns: + google.cloud.compute_v1beta.types.TestPermissionsResponse: + """ # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router, route_policy_resource] + flattened_params = [ + project, + region, + resource, + test_permissions_request_resource, + ] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -3342,22 +4532,24 @@ def sample_patch_route_policy(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.PatchRoutePolicyRouterRequest): - request = compute.PatchRoutePolicyRouterRequest(request) + if not isinstance(request, compute.TestIamPermissionsRouterRequest): + request = compute.TestIamPermissionsRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: request.project = project if region is not None: request.region = region - if router is not None: - request.router = router - if route_policy_resource is not None: - request.route_policy_resource = route_policy_resource + if resource is not None: + request.resource = resource + if test_permissions_request_resource is not None: + request.test_permissions_request_resource = ( + test_permissions_request_resource + ) # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.patch_route_policy] + rpc = self._transport._wrapped_methods[self._transport.test_iam_permissions] # Certain fields should be provided within the metadata header; # add these here. @@ -3366,7 +4558,7 @@ def sample_patch_route_policy(): ( ("project", request.project), ("region", request.region), - ("router", request.router), + ("resource", request.resource), ) ), ) @@ -3382,37 +4574,12 @@ def sample_patch_route_policy(): metadata=metadata, ) - operation_service = self._transport._region_operations_client - operation_request = compute.GetRegionOperationRequest() - operation_request.project = request.project - operation_request.region = request.region - operation_request.operation = response.name - - get_operation = functools.partial(operation_service.get, operation_request) - # Cancel is not part of extended operations yet. - cancel_operation = lambda: None - - # Note: this class is an implementation detail to provide a uniform - # set of names for certain fields in the extended operation proto message. - # See google.api_core.extended_operation.ExtendedOperation for details - # on these properties and the expected interface. - class _CustomOperation(extended_operation.ExtendedOperation): - @property - def error_message(self): - return self._extended_operation.http_error_message - - @property - def error_code(self): - return self._extended_operation.http_error_status_code - - response = _CustomOperation.make(get_operation, cancel_operation, response) - # Done; return the response. return response - def preview( + def update_unary( self, - request: Optional[Union[compute.PreviewRouterRequest, dict]] = None, + request: Optional[Union[compute.UpdateRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, @@ -3421,10 +4588,13 @@ def preview( retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.RoutersPreviewResponse: - r"""Preview fields auto-generated during router create - andupdate operations. Calling this method does NOT - create or update the router. + ) -> compute.Operation: + r"""Updates the specified Router resource with the data + included in the request. This method conforms toPUT + semantics, which requests that the state of the target + resource be created or replaced with the state defined + by the representation enclosed in the request message + payload. .. code-block:: python @@ -3437,28 +4607,27 @@ def preview( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_preview(): + def sample_update(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.PreviewRouterRequest( + request = compute_v1beta.UpdateRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.preview(request=request) + response = client.update(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.PreviewRouterRequest, dict]): - The request object. A request message for - Routers.Preview. See the method - description for details. + request (Union[google.cloud.compute_v1beta.types.UpdateRouterRequest, dict]): + The request object. A request message for Routers.Update. + See the method description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -3470,7 +4639,9 @@ def sample_preview(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource to query. + Name of the Router resource to + update. + This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. @@ -3488,7 +4659,9 @@ def sample_preview(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.types.RoutersPreviewResponse: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. """ # Create or coerce a protobuf request object. @@ -3506,8 +4679,8 @@ def sample_preview(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.PreviewRouterRequest): - request = compute.PreviewRouterRequest(request) + if not isinstance(request, compute.UpdateRouterRequest): + request = compute.UpdateRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -3521,7 +4694,7 @@ def sample_preview(): # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.preview] + rpc = self._transport._wrapped_methods[self._transport.update] # Certain fields should be provided within the metadata header; # add these here. @@ -3549,22 +4722,24 @@ def sample_preview(): # Done; return the response. return response - def test_iam_permissions( + def update( self, - request: Optional[Union[compute.TestIamPermissionsRouterRequest, dict]] = None, + request: Optional[Union[compute.UpdateRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, - resource: Optional[str] = None, - test_permissions_request_resource: Optional[ - compute.TestPermissionsRequest - ] = None, + router: Optional[str] = None, + router_resource: Optional[compute.Router] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.TestPermissionsResponse: - r"""Returns permissions that a caller has on the - specified resource. + ) -> extended_operation.ExtendedOperation: + r"""Updates the specified Router resource with the data + included in the request. This method conforms toPUT + semantics, which requests that the state of the target + resource be created or replaced with the state defined + by the representation enclosed in the request message + payload. .. code-block:: python @@ -3577,50 +4752,47 @@ def test_iam_permissions( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_test_iam_permissions(): + def sample_update(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.TestIamPermissionsRouterRequest( + request = compute_v1beta.UpdateRouterRequest( project="project_value", region="region_value", - resource="resource_value", + router="router_value", ) # Make the request - response = client.test_iam_permissions(request=request) + response = client.update(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.TestIamPermissionsRouterRequest, dict]): - The request object. A request message for - Routers.TestIamPermissions. See the - method description for details. + request (Union[google.cloud.compute_v1beta.types.UpdateRouterRequest, dict]): + The request object. A request message for Routers.Update. + See the method description for details. project (str): Project ID for this request. This corresponds to the ``project`` field on the ``request`` instance; if ``request`` is provided, this should not be set. region (str): - The name of the region for this - request. - + Name of the region for this request. This corresponds to the ``region`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - resource (str): - Name or id of the resource for this - request. + router (str): + Name of the Router resource to + update. - This corresponds to the ``resource`` field + This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - test_permissions_request_resource (google.cloud.compute_v1beta.types.TestPermissionsRequest): + router_resource (google.cloud.compute_v1beta.types.Router): The body resource for this request - This corresponds to the ``test_permissions_request_resource`` field + This corresponds to the ``router_resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -3632,18 +4804,15 @@ def sample_test_iam_permissions(): be of type `bytes`. Returns: - google.cloud.compute_v1beta.types.TestPermissionsResponse: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. """ # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [ - project, - region, - resource, - test_permissions_request_resource, - ] + flattened_params = [project, region, router, router_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -3655,24 +4824,22 @@ def sample_test_iam_permissions(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.TestIamPermissionsRouterRequest): - request = compute.TestIamPermissionsRouterRequest(request) + if not isinstance(request, compute.UpdateRouterRequest): + request = compute.UpdateRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: request.project = project if region is not None: request.region = region - if resource is not None: - request.resource = resource - if test_permissions_request_resource is not None: - request.test_permissions_request_resource = ( - test_permissions_request_resource - ) + if router is not None: + request.router = router + if router_resource is not None: + request.router_resource = router_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.test_iam_permissions] + rpc = self._transport._wrapped_methods[self._transport.update] # Certain fields should be provided within the metadata header; # add these here. @@ -3681,7 +4848,7 @@ def sample_test_iam_permissions(): ( ("project", request.project), ("region", request.region), - ("resource", request.resource), + ("router", request.router), ) ), ) @@ -3697,27 +4864,47 @@ def sample_test_iam_permissions(): metadata=metadata, ) + operation_service = self._transport._region_operations_client + operation_request = compute.GetRegionOperationRequest() + operation_request.project = request.project + operation_request.region = request.region + operation_request.operation = response.name + + get_operation = functools.partial(operation_service.get, operation_request) + # Cancel is not part of extended operations yet. + cancel_operation = lambda: None + + # Note: this class is an implementation detail to provide a uniform + # set of names for certain fields in the extended operation proto message. + # See google.api_core.extended_operation.ExtendedOperation for details + # on these properties and the expected interface. + class _CustomOperation(extended_operation.ExtendedOperation): + @property + def error_message(self): + return self._extended_operation.http_error_message + + @property + def error_code(self): + return self._extended_operation.http_error_status_code + + response = _CustomOperation.make(get_operation, cancel_operation, response) + # Done; return the response. return response - def update_unary( + def update_named_set_unary( self, - request: Optional[Union[compute.UpdateRouterRequest, dict]] = None, + request: Optional[Union[compute.UpdateNamedSetRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, router: Optional[str] = None, - router_resource: Optional[compute.Router] = None, + named_set_resource: Optional[compute.NamedSet] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> compute.Operation: - r"""Updates the specified Router resource with the data - included in the request. This method conforms toPUT - semantics, which requests that the state of the target - resource be created or replaced with the state defined - by the representation enclosed in the request message - payload. + r"""Updates or creates new Named Set .. code-block:: python @@ -3730,27 +4917,28 @@ def update_unary( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_update(): + def sample_update_named_set(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.UpdateRouterRequest( + request = compute_v1beta.UpdateNamedSetRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.update(request=request) + response = client.update_named_set(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.UpdateRouterRequest, dict]): - The request object. A request message for Routers.Update. - See the method description for details. + request (Union[google.cloud.compute_v1beta.types.UpdateNamedSetRouterRequest, dict]): + The request object. A request message for + Routers.UpdateNamedSet. See the method + description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -3762,15 +4950,15 @@ def sample_update(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource to - update. + Name of the Router resource where + Named Set is defined. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - router_resource (google.cloud.compute_v1beta.types.Router): + named_set_resource (google.cloud.compute_v1beta.types.NamedSet): The body resource for this request - This corresponds to the ``router_resource`` field + This corresponds to the ``named_set_resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -3790,7 +4978,7 @@ def sample_update(): # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router, router_resource] + flattened_params = [project, region, router, named_set_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -3802,8 +4990,8 @@ def sample_update(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.UpdateRouterRequest): - request = compute.UpdateRouterRequest(request) + if not isinstance(request, compute.UpdateNamedSetRouterRequest): + request = compute.UpdateNamedSetRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -3812,12 +5000,12 @@ def sample_update(): request.region = region if router is not None: request.router = router - if router_resource is not None: - request.router_resource = router_resource + if named_set_resource is not None: + request.named_set_resource = named_set_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.update] + rpc = self._transport._wrapped_methods[self._transport.update_named_set] # Certain fields should be provided within the metadata header; # add these here. @@ -3845,24 +5033,19 @@ def sample_update(): # Done; return the response. return response - def update( + def update_named_set( self, - request: Optional[Union[compute.UpdateRouterRequest, dict]] = None, + request: Optional[Union[compute.UpdateNamedSetRouterRequest, dict]] = None, *, project: Optional[str] = None, region: Optional[str] = None, router: Optional[str] = None, - router_resource: Optional[compute.Router] = None, + named_set_resource: Optional[compute.NamedSet] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> extended_operation.ExtendedOperation: - r"""Updates the specified Router resource with the data - included in the request. This method conforms toPUT - semantics, which requests that the state of the target - resource be created or replaced with the state defined - by the representation enclosed in the request message - payload. + r"""Updates or creates new Named Set .. code-block:: python @@ -3875,27 +5058,28 @@ def update( # https://googleapis.dev/python/google-api-core/latest/client_options.html from google.cloud import compute_v1beta - def sample_update(): + def sample_update_named_set(): # Create a client client = compute_v1beta.RoutersClient() # Initialize request argument(s) - request = compute_v1beta.UpdateRouterRequest( + request = compute_v1beta.UpdateNamedSetRouterRequest( project="project_value", region="region_value", router="router_value", ) # Make the request - response = client.update(request=request) + response = client.update_named_set(request=request) # Handle the response print(response) Args: - request (Union[google.cloud.compute_v1beta.types.UpdateRouterRequest, dict]): - The request object. A request message for Routers.Update. - See the method description for details. + request (Union[google.cloud.compute_v1beta.types.UpdateNamedSetRouterRequest, dict]): + The request object. A request message for + Routers.UpdateNamedSet. See the method + description for details. project (str): Project ID for this request. This corresponds to the ``project`` field @@ -3907,15 +5091,15 @@ def sample_update(): on the ``request`` instance; if ``request`` is provided, this should not be set. router (str): - Name of the Router resource to - update. + Name of the Router resource where + Named Set is defined. This corresponds to the ``router`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - router_resource (google.cloud.compute_v1beta.types.Router): + named_set_resource (google.cloud.compute_v1beta.types.NamedSet): The body resource for this request - This corresponds to the ``router_resource`` field + This corresponds to the ``named_set_resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -3935,7 +5119,7 @@ def sample_update(): # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have # gotten any keyword arguments that map to the request. - flattened_params = [project, region, router, router_resource] + flattened_params = [project, region, router, named_set_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -3947,8 +5131,8 @@ def sample_update(): # - Use the request object if provided (there's no risk of modifying the input as # there are no flattened fields), or create one. - if not isinstance(request, compute.UpdateRouterRequest): - request = compute.UpdateRouterRequest(request) + if not isinstance(request, compute.UpdateNamedSetRouterRequest): + request = compute.UpdateNamedSetRouterRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. if project is not None: @@ -3957,12 +5141,12 @@ def sample_update(): request.region = region if router is not None: request.router = router - if router_resource is not None: - request.router_resource = router_resource + if named_set_resource is not None: + request.named_set_resource = named_set_resource # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.update] + rpc = self._transport._wrapped_methods[self._transport.update_named_set] # Certain fields should be provided within the metadata header; # add these here. diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/pagers.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/pagers.py index 7a883ab35729..f9cfa1647989 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/pagers.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/pagers.py @@ -348,6 +348,82 @@ def __repr__(self) -> str: return "{0}<{1!r}>".format(self.__class__.__name__, self._response) +class ListNamedSetsPager: + """A pager for iterating through ``list_named_sets`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1beta.types.RoutersListNamedSets` object, and + provides an ``__iter__`` method to iterate through its + ``result`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``ListNamedSets`` requests and continue to iterate + through the ``result`` field on the + corresponding responses. + + All the usual :class:`google.cloud.compute_v1beta.types.RoutersListNamedSets` + attributes are available on the pager. If multiple requests are made, only + the most recent response is retained, and thus used for attribute lookup. + """ + + def __init__( + self, + method: Callable[..., compute.RoutersListNamedSets], + request: compute.ListNamedSetsRoutersRequest, + response: compute.RoutersListNamedSets, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ): + """Instantiate the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.cloud.compute_v1beta.types.ListNamedSetsRoutersRequest): + The initial request object. + response (google.cloud.compute_v1beta.types.RoutersListNamedSets): + The initial response object. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + self._method = method + self._request = compute.ListNamedSetsRoutersRequest(request) + self._response = response + self._retry = retry + self._timeout = timeout + self._metadata = metadata + + def __getattr__(self, name: str) -> Any: + return getattr(self._response, name) + + @property + def pages(self) -> Iterator[compute.RoutersListNamedSets]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = self._method( + self._request, + retry=self._retry, + timeout=self._timeout, + metadata=self._metadata, + ) + yield self._response + + def __iter__(self) -> Iterator[compute.NamedSet]: + for page in self.pages: + yield from page.result + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + class ListRoutePoliciesPager: """A pager for iterating through ``list_route_policies`` requests. diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/base.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/base.py index a33c29e1d88d..f809756e91f1 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/base.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/base.py @@ -151,6 +151,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.delete_named_set: gapic_v1.method.wrap_method( + self.delete_named_set, + default_timeout=None, + client_info=client_info, + ), self.delete_route_policy: gapic_v1.method.wrap_method( self.delete_route_policy, default_timeout=None, @@ -161,6 +166,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.get_named_set: gapic_v1.method.wrap_method( + self.get_named_set, + default_timeout=None, + client_info=client_info, + ), self.get_nat_ip_info: gapic_v1.method.wrap_method( self.get_nat_ip_info, default_timeout=None, @@ -196,6 +206,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.list_named_sets: gapic_v1.method.wrap_method( + self.list_named_sets, + default_timeout=None, + client_info=client_info, + ), self.list_route_policies: gapic_v1.method.wrap_method( self.list_route_policies, default_timeout=None, @@ -206,6 +221,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.patch_named_set: gapic_v1.method.wrap_method( + self.patch_named_set, + default_timeout=None, + client_info=client_info, + ), self.patch_route_policy: gapic_v1.method.wrap_method( self.patch_route_policy, default_timeout=None, @@ -226,6 +246,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.update_named_set: gapic_v1.method.wrap_method( + self.update_named_set, + default_timeout=None, + client_info=client_info, + ), self.update_route_policy: gapic_v1.method.wrap_method( self.update_route_policy, default_timeout=None, @@ -260,6 +285,15 @@ def delete( ]: raise NotImplementedError() + @property + def delete_named_set( + self, + ) -> Callable[ + [compute.DeleteNamedSetRouterRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + @property def delete_route_policy( self, @@ -277,6 +311,18 @@ def get( ]: raise NotImplementedError() + @property + def get_named_set( + self, + ) -> Callable[ + [compute.GetNamedSetRouterRequest], + Union[ + compute.RoutersGetNamedSetResponse, + Awaitable[compute.RoutersGetNamedSetResponse], + ], + ]: + raise NotImplementedError() + @property def get_nat_ip_info( self, @@ -346,6 +392,15 @@ def list_bgp_routes( ]: raise NotImplementedError() + @property + def list_named_sets( + self, + ) -> Callable[ + [compute.ListNamedSetsRoutersRequest], + Union[compute.RoutersListNamedSets, Awaitable[compute.RoutersListNamedSets]], + ]: + raise NotImplementedError() + @property def list_route_policies( self, @@ -367,6 +422,15 @@ def patch( ]: raise NotImplementedError() + @property + def patch_named_set( + self, + ) -> Callable[ + [compute.PatchNamedSetRouterRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + @property def patch_route_policy( self, @@ -407,6 +471,15 @@ def update( ]: raise NotImplementedError() + @property + def update_named_set( + self, + ) -> Callable[ + [compute.UpdateNamedSetRouterRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + @property def update_route_policy( self, diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/rest.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/rest.py index bb45c09ed2cd..a67b0de96d73 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/rest.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/rest.py @@ -88,6 +88,14 @@ def post_delete(self, response): logging.log(f"Received response: {response}") return response + def pre_delete_named_set(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_delete_named_set(self, response): + logging.log(f"Received response: {response}") + return response + def pre_delete_route_policy(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -104,6 +112,14 @@ def post_get(self, response): logging.log(f"Received response: {response}") return response + def pre_get_named_set(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_get_named_set(self, response): + logging.log(f"Received response: {response}") + return response + def pre_get_nat_ip_info(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -160,6 +176,14 @@ def post_list_bgp_routes(self, response): logging.log(f"Received response: {response}") return response + def pre_list_named_sets(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_list_named_sets(self, response): + logging.log(f"Received response: {response}") + return response + def pre_list_route_policies(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -176,6 +200,14 @@ def post_patch(self, response): logging.log(f"Received response: {response}") return response + def pre_patch_named_set(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_patch_named_set(self, response): + logging.log(f"Received response: {response}") + return response + def pre_patch_route_policy(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -208,6 +240,14 @@ def post_update(self, response): logging.log(f"Received response: {response}") return response + def pre_update_named_set(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_update_named_set(self, response): + logging.log(f"Received response: {response}") + return response + def pre_update_route_policy(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -314,6 +354,52 @@ def post_delete_with_metadata( """ return response, metadata + def pre_delete_named_set( + self, + request: compute.DeleteNamedSetRouterRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.DeleteNamedSetRouterRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for delete_named_set + + Override in a subclass to manipulate the request or metadata + before they are sent to the Routers server. + """ + return request, metadata + + def post_delete_named_set(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for delete_named_set + + DEPRECATED. Please use the `post_delete_named_set_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the Routers server but before + it is returned to user code. This `post_delete_named_set` interceptor runs + before the `post_delete_named_set_with_metadata` interceptor. + """ + return response + + def post_delete_named_set_with_metadata( + self, + response: compute.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for delete_named_set + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the Routers server but before it is returned to user code. + + We recommend only using this `post_delete_named_set_with_metadata` + interceptor in new development instead of the `post_delete_named_set` interceptor. + When both interceptors are used, this `post_delete_named_set_with_metadata` interceptor runs after the + `post_delete_named_set` interceptor. The (possibly modified) response returned by + `post_delete_named_set` will be passed to + `post_delete_named_set_with_metadata`. + """ + return response, metadata + def pre_delete_route_policy( self, request: compute.DeleteRoutePolicyRouterRequest, @@ -406,6 +492,56 @@ def post_get_with_metadata( """ return response, metadata + def pre_get_named_set( + self, + request: compute.GetNamedSetRouterRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GetNamedSetRouterRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for get_named_set + + Override in a subclass to manipulate the request or metadata + before they are sent to the Routers server. + """ + return request, metadata + + def post_get_named_set( + self, response: compute.RoutersGetNamedSetResponse + ) -> compute.RoutersGetNamedSetResponse: + """Post-rpc interceptor for get_named_set + + DEPRECATED. Please use the `post_get_named_set_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the Routers server but before + it is returned to user code. This `post_get_named_set` interceptor runs + before the `post_get_named_set_with_metadata` interceptor. + """ + return response + + def post_get_named_set_with_metadata( + self, + response: compute.RoutersGetNamedSetResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.RoutersGetNamedSetResponse, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for get_named_set + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the Routers server but before it is returned to user code. + + We recommend only using this `post_get_named_set_with_metadata` + interceptor in new development instead of the `post_get_named_set` interceptor. + When both interceptors are used, this `post_get_named_set_with_metadata` interceptor runs after the + `post_get_named_set` interceptor. The (possibly modified) response returned by + `post_get_named_set` will be passed to + `post_get_named_set_with_metadata`. + """ + return response, metadata + def pre_get_nat_ip_info( self, request: compute.GetNatIpInfoRouterRequest, @@ -738,6 +874,54 @@ def post_list_bgp_routes_with_metadata( """ return response, metadata + def pre_list_named_sets( + self, + request: compute.ListNamedSetsRoutersRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.ListNamedSetsRoutersRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for list_named_sets + + Override in a subclass to manipulate the request or metadata + before they are sent to the Routers server. + """ + return request, metadata + + def post_list_named_sets( + self, response: compute.RoutersListNamedSets + ) -> compute.RoutersListNamedSets: + """Post-rpc interceptor for list_named_sets + + DEPRECATED. Please use the `post_list_named_sets_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the Routers server but before + it is returned to user code. This `post_list_named_sets` interceptor runs + before the `post_list_named_sets_with_metadata` interceptor. + """ + return response + + def post_list_named_sets_with_metadata( + self, + response: compute.RoutersListNamedSets, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.RoutersListNamedSets, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for list_named_sets + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the Routers server but before it is returned to user code. + + We recommend only using this `post_list_named_sets_with_metadata` + interceptor in new development instead of the `post_list_named_sets` interceptor. + When both interceptors are used, this `post_list_named_sets_with_metadata` interceptor runs after the + `post_list_named_sets` interceptor. The (possibly modified) response returned by + `post_list_named_sets` will be passed to + `post_list_named_sets_with_metadata`. + """ + return response, metadata + def pre_list_route_policies( self, request: compute.ListRoutePoliciesRoutersRequest, @@ -832,6 +1016,52 @@ def post_patch_with_metadata( """ return response, metadata + def pre_patch_named_set( + self, + request: compute.PatchNamedSetRouterRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.PatchNamedSetRouterRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for patch_named_set + + Override in a subclass to manipulate the request or metadata + before they are sent to the Routers server. + """ + return request, metadata + + def post_patch_named_set(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for patch_named_set + + DEPRECATED. Please use the `post_patch_named_set_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the Routers server but before + it is returned to user code. This `post_patch_named_set` interceptor runs + before the `post_patch_named_set_with_metadata` interceptor. + """ + return response + + def post_patch_named_set_with_metadata( + self, + response: compute.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for patch_named_set + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the Routers server but before it is returned to user code. + + We recommend only using this `post_patch_named_set_with_metadata` + interceptor in new development instead of the `post_patch_named_set` interceptor. + When both interceptors are used, this `post_patch_named_set_with_metadata` interceptor runs after the + `post_patch_named_set` interceptor. The (possibly modified) response returned by + `post_patch_named_set` will be passed to + `post_patch_named_set_with_metadata`. + """ + return response, metadata + def pre_patch_route_policy( self, request: compute.PatchRoutePolicyRouterRequest, @@ -1018,6 +1248,52 @@ def post_update_with_metadata( """ return response, metadata + def pre_update_named_set( + self, + request: compute.UpdateNamedSetRouterRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.UpdateNamedSetRouterRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for update_named_set + + Override in a subclass to manipulate the request or metadata + before they are sent to the Routers server. + """ + return request, metadata + + def post_update_named_set(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for update_named_set + + DEPRECATED. Please use the `post_update_named_set_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the Routers server but before + it is returned to user code. This `post_update_named_set` interceptor runs + before the `post_update_named_set_with_metadata` interceptor. + """ + return response + + def post_update_named_set_with_metadata( + self, + response: compute.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for update_named_set + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the Routers server but before it is returned to user code. + + We recommend only using this `post_update_named_set_with_metadata` + interceptor in new development instead of the `post_update_named_set` interceptor. + When both interceptors are used, this `post_update_named_set_with_metadata` interceptor runs after the + `post_update_named_set` interceptor. The (possibly modified) response returned by + `post_update_named_set` will be passed to + `post_update_named_set_with_metadata`. + """ + return response, metadata + def pre_update_route_policy( self, request: compute.UpdateRoutePolicyRouterRequest, @@ -1479,11 +1755,11 @@ def __call__( ) return resp - class _DeleteRoutePolicy( - _BaseRoutersRestTransport._BaseDeleteRoutePolicy, RoutersRestStub + class _DeleteNamedSet( + _BaseRoutersRestTransport._BaseDeleteNamedSet, RoutersRestStub ): def __hash__(self): - return hash("RoutersRestTransport.DeleteRoutePolicy") + return hash("RoutersRestTransport.DeleteNamedSet") @staticmethod def _get_response( @@ -1509,19 +1785,19 @@ def _get_response( def __call__( self, - request: compute.DeleteRoutePolicyRouterRequest, + request: compute.DeleteNamedSetRouterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> compute.Operation: - r"""Call the delete route policy method over HTTP. + r"""Call the delete named set method over HTTP. Args: - request (~.compute.DeleteRoutePolicyRouterRequest): + request (~.compute.DeleteNamedSetRouterRequest): The request object. A request message for - Routers.DeleteRoutePolicy. See the - method description for details. + Routers.DeleteNamedSet. See the method + description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -1564,19 +1840,21 @@ def __call__( """ http_options = ( - _BaseRoutersRestTransport._BaseDeleteRoutePolicy._get_http_options() + _BaseRoutersRestTransport._BaseDeleteNamedSet._get_http_options() ) - request, metadata = self._interceptor.pre_delete_route_policy( + request, metadata = self._interceptor.pre_delete_named_set( request, metadata ) - transcoded_request = _BaseRoutersRestTransport._BaseDeleteRoutePolicy._get_transcoded_request( - http_options, request + transcoded_request = ( + _BaseRoutersRestTransport._BaseDeleteNamedSet._get_transcoded_request( + http_options, request + ) ) # Jsonify the query params query_params = ( - _BaseRoutersRestTransport._BaseDeleteRoutePolicy._get_query_params_json( + _BaseRoutersRestTransport._BaseDeleteNamedSet._get_query_params_json( transcoded_request ) ) @@ -1599,17 +1877,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.DeleteRoutePolicy", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.DeleteNamedSet", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "DeleteRoutePolicy", + "rpcName": "DeleteNamedSet", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._DeleteRoutePolicy._get_response( + response = RoutersRestTransport._DeleteNamedSet._get_response( self._host, metadata, query_params, @@ -1629,9 +1907,9 @@ def __call__( json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_delete_route_policy(resp) + resp = self._interceptor.post_delete_named_set(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_delete_route_policy_with_metadata( + resp, _ = self._interceptor.post_delete_named_set_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -1647,19 +1925,21 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.delete_route_policy", + "Received response for google.cloud.compute_v1beta.RoutersClient.delete_named_set", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "DeleteRoutePolicy", + "rpcName": "DeleteNamedSet", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _Get(_BaseRoutersRestTransport._BaseGet, RoutersRestStub): + class _DeleteRoutePolicy( + _BaseRoutersRestTransport._BaseDeleteRoutePolicy, RoutersRestStub + ): def __hash__(self): - return hash("RoutersRestTransport.Get") + return hash("RoutersRestTransport.DeleteRoutePolicy") @staticmethod def _get_response( @@ -1685,18 +1965,19 @@ def _get_response( def __call__( self, - request: compute.GetRouterRequest, + request: compute.DeleteRoutePolicyRouterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.Router: - r"""Call the get method over HTTP. + ) -> compute.Operation: + r"""Call the delete route policy method over HTTP. Args: - request (~.compute.GetRouterRequest): - The request object. A request message for Routers.Get. - See the method description for details. + request (~.compute.DeleteRoutePolicyRouterRequest): + The request object. A request message for + Routers.DeleteRoutePolicy. See the + method description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -1706,57 +1987,85 @@ def __call__( be of type `bytes`. Returns: - ~.compute.Router: - Represents a Cloud Router resource. + ~.compute.Operation: + Represents an Operation resource. - For more information about Cloud Router, - read theCloud Router overview. + Google Compute Engine has three Operation resources: - """ + - `Global `__ + - `Regional `__ + - `Zonal `__ - http_options = _BaseRoutersRestTransport._BaseGet._get_http_options() + You can use an operation resource to manage asynchronous + API requests. For more information, readHandling API + responses. - request, metadata = self._interceptor.pre_get(request, metadata) - transcoded_request = ( - _BaseRoutersRestTransport._BaseGet._get_transcoded_request( - http_options, request - ) - ) + Operations can be global, regional or zonal. - # Jsonify the query params - query_params = _BaseRoutersRestTransport._BaseGet._get_query_params_json( - transcoded_request - ) + :: - if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( - logging.DEBUG - ): # pragma: NO COVER - request_url = "{host}{uri}".format( - host=self._host, uri=transcoded_request["uri"] - ) - method = transcoded_request["method"] - try: - request_payload = type(request).to_json(request) - except: - request_payload = None - http_request = { - "payload": request_payload, + - For global operations, use the `globalOperations` + resource. + - For regional operations, use the + `regionOperations` resource. + - For zonal operations, use + the `zoneOperations` resource. + + For more information, read Global, Regional, and Zonal + Resources. + + Note that completed Operation resources have a limited + retention period. + + """ + + http_options = ( + _BaseRoutersRestTransport._BaseDeleteRoutePolicy._get_http_options() + ) + + request, metadata = self._interceptor.pre_delete_route_policy( + request, metadata + ) + transcoded_request = _BaseRoutersRestTransport._BaseDeleteRoutePolicy._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = ( + _BaseRoutersRestTransport._BaseDeleteRoutePolicy._get_query_params_json( + transcoded_request + ) + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, "requestMethod": method, "requestUrl": request_url, "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.Get", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.DeleteRoutePolicy", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "Get", + "rpcName": "DeleteRoutePolicy", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._Get._get_response( + response = RoutersRestTransport._DeleteRoutePolicy._get_response( self._host, metadata, query_params, @@ -1771,19 +2080,21 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = compute.Router() - pb_resp = compute.Router.pb(resp) + resp = compute.Operation() + pb_resp = compute.Operation.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get(resp) + resp = self._interceptor.post_delete_route_policy(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_with_metadata(resp, response_metadata) + resp, _ = self._interceptor.post_delete_route_policy_with_metadata( + resp, response_metadata + ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = compute.Router.to_json(response) + response_payload = compute.Operation.to_json(response) except: response_payload = None http_response = { @@ -1792,19 +2103,19 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.get", + "Received response for google.cloud.compute_v1beta.RoutersClient.delete_route_policy", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "Get", + "rpcName": "DeleteRoutePolicy", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetNatIpInfo(_BaseRoutersRestTransport._BaseGetNatIpInfo, RoutersRestStub): + class _Get(_BaseRoutersRestTransport._BaseGet, RoutersRestStub): def __hash__(self): - return hash("RoutersRestTransport.GetNatIpInfo") + return hash("RoutersRestTransport.Get") @staticmethod def _get_response( @@ -1830,19 +2141,18 @@ def _get_response( def __call__( self, - request: compute.GetNatIpInfoRouterRequest, + request: compute.GetRouterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.NatIpInfoResponse: - r"""Call the get nat ip info method over HTTP. + ) -> compute.Router: + r"""Call the get method over HTTP. Args: - request (~.compute.GetNatIpInfoRouterRequest): - The request object. A request message for - Routers.GetNatIpInfo. See the method - description for details. + request (~.compute.GetRouterRequest): + The request object. A request message for Routers.Get. + See the method description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -1852,26 +2162,26 @@ def __call__( be of type `bytes`. Returns: - ~.compute.NatIpInfoResponse: + ~.compute.Router: + Represents a Cloud Router resource. + + For more information about Cloud Router, + read theCloud Router overview. """ - http_options = ( - _BaseRoutersRestTransport._BaseGetNatIpInfo._get_http_options() - ) + http_options = _BaseRoutersRestTransport._BaseGet._get_http_options() - request, metadata = self._interceptor.pre_get_nat_ip_info(request, metadata) + request, metadata = self._interceptor.pre_get(request, metadata) transcoded_request = ( - _BaseRoutersRestTransport._BaseGetNatIpInfo._get_transcoded_request( + _BaseRoutersRestTransport._BaseGet._get_transcoded_request( http_options, request ) ) # Jsonify the query params - query_params = ( - _BaseRoutersRestTransport._BaseGetNatIpInfo._get_query_params_json( - transcoded_request - ) + query_params = _BaseRoutersRestTransport._BaseGet._get_query_params_json( + transcoded_request ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -1892,17 +2202,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.GetNatIpInfo", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.Get", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "GetNatIpInfo", + "rpcName": "Get", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._GetNatIpInfo._get_response( + response = RoutersRestTransport._Get._get_response( self._host, metadata, query_params, @@ -1917,21 +2227,19 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = compute.NatIpInfoResponse() - pb_resp = compute.NatIpInfoResponse.pb(resp) + resp = compute.Router() + pb_resp = compute.Router.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_nat_ip_info(resp) + resp = self._interceptor.post_get(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_nat_ip_info_with_metadata( - resp, response_metadata - ) + resp, _ = self._interceptor.post_get_with_metadata(resp, response_metadata) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = compute.NatIpInfoResponse.to_json(response) + response_payload = compute.Router.to_json(response) except: response_payload = None http_response = { @@ -1940,21 +2248,19 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.get_nat_ip_info", + "Received response for google.cloud.compute_v1beta.RoutersClient.get", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "GetNatIpInfo", + "rpcName": "Get", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetNatMappingInfo( - _BaseRoutersRestTransport._BaseGetNatMappingInfo, RoutersRestStub - ): + class _GetNamedSet(_BaseRoutersRestTransport._BaseGetNamedSet, RoutersRestStub): def __hash__(self): - return hash("RoutersRestTransport.GetNatMappingInfo") + return hash("RoutersRestTransport.GetNamedSet") @staticmethod def _get_response( @@ -1980,19 +2286,19 @@ def _get_response( def __call__( self, - request: compute.GetNatMappingInfoRoutersRequest, + request: compute.GetNamedSetRouterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.VmEndpointNatMappingsList: - r"""Call the get nat mapping info method over HTTP. + ) -> compute.RoutersGetNamedSetResponse: + r"""Call the get named set method over HTTP. Args: - request (~.compute.GetNatMappingInfoRoutersRequest): + request (~.compute.GetNamedSetRouterRequest): The request object. A request message for - Routers.GetNatMappingInfo. See the - method description for details. + Routers.GetNamedSet. See the method + description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2002,26 +2308,24 @@ def __call__( be of type `bytes`. Returns: - ~.compute.VmEndpointNatMappingsList: - Contains a list of - VmEndpointNatMappings. + ~.compute.RoutersGetNamedSetResponse: """ http_options = ( - _BaseRoutersRestTransport._BaseGetNatMappingInfo._get_http_options() + _BaseRoutersRestTransport._BaseGetNamedSet._get_http_options() ) - request, metadata = self._interceptor.pre_get_nat_mapping_info( - request, metadata - ) - transcoded_request = _BaseRoutersRestTransport._BaseGetNatMappingInfo._get_transcoded_request( - http_options, request + request, metadata = self._interceptor.pre_get_named_set(request, metadata) + transcoded_request = ( + _BaseRoutersRestTransport._BaseGetNamedSet._get_transcoded_request( + http_options, request + ) ) # Jsonify the query params query_params = ( - _BaseRoutersRestTransport._BaseGetNatMappingInfo._get_query_params_json( + _BaseRoutersRestTransport._BaseGetNamedSet._get_query_params_json( transcoded_request ) ) @@ -2044,17 +2348,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.GetNatMappingInfo", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.GetNamedSet", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "GetNatMappingInfo", + "rpcName": "GetNamedSet", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._GetNatMappingInfo._get_response( + response = RoutersRestTransport._GetNamedSet._get_response( self._host, metadata, query_params, @@ -2069,21 +2373,21 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = compute.VmEndpointNatMappingsList() - pb_resp = compute.VmEndpointNatMappingsList.pb(resp) + resp = compute.RoutersGetNamedSetResponse() + pb_resp = compute.RoutersGetNamedSetResponse.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_nat_mapping_info(resp) + resp = self._interceptor.post_get_named_set(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_nat_mapping_info_with_metadata( + resp, _ = self._interceptor.post_get_named_set_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = compute.VmEndpointNatMappingsList.to_json( + response_payload = compute.RoutersGetNamedSetResponse.to_json( response ) except: @@ -2094,21 +2398,19 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.get_nat_mapping_info", + "Received response for google.cloud.compute_v1beta.RoutersClient.get_named_set", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "GetNatMappingInfo", + "rpcName": "GetNamedSet", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetRoutePolicy( - _BaseRoutersRestTransport._BaseGetRoutePolicy, RoutersRestStub - ): + class _GetNatIpInfo(_BaseRoutersRestTransport._BaseGetNatIpInfo, RoutersRestStub): def __hash__(self): - return hash("RoutersRestTransport.GetRoutePolicy") + return hash("RoutersRestTransport.GetNatIpInfo") @staticmethod def _get_response( @@ -2134,18 +2436,18 @@ def _get_response( def __call__( self, - request: compute.GetRoutePolicyRouterRequest, + request: compute.GetNatIpInfoRouterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.RoutersGetRoutePolicyResponse: - r"""Call the get route policy method over HTTP. + ) -> compute.NatIpInfoResponse: + r"""Call the get nat ip info method over HTTP. Args: - request (~.compute.GetRoutePolicyRouterRequest): + request (~.compute.GetNatIpInfoRouterRequest): The request object. A request message for - Routers.GetRoutePolicy. See the method + Routers.GetNatIpInfo. See the method description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. @@ -2156,26 +2458,24 @@ def __call__( be of type `bytes`. Returns: - ~.compute.RoutersGetRoutePolicyResponse: + ~.compute.NatIpInfoResponse: """ http_options = ( - _BaseRoutersRestTransport._BaseGetRoutePolicy._get_http_options() + _BaseRoutersRestTransport._BaseGetNatIpInfo._get_http_options() ) - request, metadata = self._interceptor.pre_get_route_policy( - request, metadata - ) + request, metadata = self._interceptor.pre_get_nat_ip_info(request, metadata) transcoded_request = ( - _BaseRoutersRestTransport._BaseGetRoutePolicy._get_transcoded_request( + _BaseRoutersRestTransport._BaseGetNatIpInfo._get_transcoded_request( http_options, request ) ) # Jsonify the query params query_params = ( - _BaseRoutersRestTransport._BaseGetRoutePolicy._get_query_params_json( + _BaseRoutersRestTransport._BaseGetNatIpInfo._get_query_params_json( transcoded_request ) ) @@ -2198,17 +2498,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.GetRoutePolicy", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.GetNatIpInfo", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "GetRoutePolicy", + "rpcName": "GetNatIpInfo", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._GetRoutePolicy._get_response( + response = RoutersRestTransport._GetNatIpInfo._get_response( self._host, metadata, query_params, @@ -2223,23 +2523,21 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = compute.RoutersGetRoutePolicyResponse() - pb_resp = compute.RoutersGetRoutePolicyResponse.pb(resp) + resp = compute.NatIpInfoResponse() + pb_resp = compute.NatIpInfoResponse.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_route_policy(resp) + resp = self._interceptor.post_get_nat_ip_info(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_route_policy_with_metadata( + resp, _ = self._interceptor.post_get_nat_ip_info_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = compute.RoutersGetRoutePolicyResponse.to_json( - response - ) + response_payload = compute.NatIpInfoResponse.to_json(response) except: response_payload = None http_response = { @@ -2248,21 +2546,21 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.get_route_policy", + "Received response for google.cloud.compute_v1beta.RoutersClient.get_nat_ip_info", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "GetRoutePolicy", + "rpcName": "GetNatIpInfo", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _GetRouterStatus( - _BaseRoutersRestTransport._BaseGetRouterStatus, RoutersRestStub + class _GetNatMappingInfo( + _BaseRoutersRestTransport._BaseGetNatMappingInfo, RoutersRestStub ): def __hash__(self): - return hash("RoutersRestTransport.GetRouterStatus") + return hash("RoutersRestTransport.GetNatMappingInfo") @staticmethod def _get_response( @@ -2288,19 +2586,19 @@ def _get_response( def __call__( self, - request: compute.GetRouterStatusRouterRequest, + request: compute.GetNatMappingInfoRoutersRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.RouterStatusResponse: - r"""Call the get router status method over HTTP. + ) -> compute.VmEndpointNatMappingsList: + r"""Call the get nat mapping info method over HTTP. Args: - request (~.compute.GetRouterStatusRouterRequest): + request (~.compute.GetNatMappingInfoRoutersRequest): The request object. A request message for - Routers.GetRouterStatus. See the method - description for details. + Routers.GetNatMappingInfo. See the + method description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2310,26 +2608,26 @@ def __call__( be of type `bytes`. Returns: - ~.compute.RouterStatusResponse: + ~.compute.VmEndpointNatMappingsList: + Contains a list of + VmEndpointNatMappings. """ http_options = ( - _BaseRoutersRestTransport._BaseGetRouterStatus._get_http_options() + _BaseRoutersRestTransport._BaseGetNatMappingInfo._get_http_options() ) - request, metadata = self._interceptor.pre_get_router_status( + request, metadata = self._interceptor.pre_get_nat_mapping_info( request, metadata ) - transcoded_request = ( - _BaseRoutersRestTransport._BaseGetRouterStatus._get_transcoded_request( - http_options, request - ) + transcoded_request = _BaseRoutersRestTransport._BaseGetNatMappingInfo._get_transcoded_request( + http_options, request ) # Jsonify the query params query_params = ( - _BaseRoutersRestTransport._BaseGetRouterStatus._get_query_params_json( + _BaseRoutersRestTransport._BaseGetNatMappingInfo._get_query_params_json( transcoded_request ) ) @@ -2352,17 +2650,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.GetRouterStatus", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.GetNatMappingInfo", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "GetRouterStatus", + "rpcName": "GetNatMappingInfo", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._GetRouterStatus._get_response( + response = RoutersRestTransport._GetNatMappingInfo._get_response( self._host, metadata, query_params, @@ -2377,21 +2675,647 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = compute.RouterStatusResponse() - pb_resp = compute.RouterStatusResponse.pb(resp) + resp = compute.VmEndpointNatMappingsList() + pb_resp = compute.VmEndpointNatMappingsList.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_router_status(resp) + resp = self._interceptor.post_get_nat_mapping_info(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_nat_mapping_info_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.VmEndpointNatMappingsList.to_json( + response + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.RoutersClient.get_nat_mapping_info", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "GetNatMappingInfo", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetRoutePolicy( + _BaseRoutersRestTransport._BaseGetRoutePolicy, RoutersRestStub + ): + def __hash__(self): + return hash("RoutersRestTransport.GetRoutePolicy") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: compute.GetRoutePolicyRouterRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.RoutersGetRoutePolicyResponse: + r"""Call the get route policy method over HTTP. + + Args: + request (~.compute.GetRoutePolicyRouterRequest): + The request object. A request message for + Routers.GetRoutePolicy. See the method + description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.RoutersGetRoutePolicyResponse: + + """ + + http_options = ( + _BaseRoutersRestTransport._BaseGetRoutePolicy._get_http_options() + ) + + request, metadata = self._interceptor.pre_get_route_policy( + request, metadata + ) + transcoded_request = ( + _BaseRoutersRestTransport._BaseGetRoutePolicy._get_transcoded_request( + http_options, request + ) + ) + + # Jsonify the query params + query_params = ( + _BaseRoutersRestTransport._BaseGetRoutePolicy._get_query_params_json( + transcoded_request + ) + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.RoutersClient.GetRoutePolicy", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "GetRoutePolicy", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = RoutersRestTransport._GetRoutePolicy._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.RoutersGetRoutePolicyResponse() + pb_resp = compute.RoutersGetRoutePolicyResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_route_policy(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_route_policy_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.RoutersGetRoutePolicyResponse.to_json( + response + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.RoutersClient.get_route_policy", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "GetRoutePolicy", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetRouterStatus( + _BaseRoutersRestTransport._BaseGetRouterStatus, RoutersRestStub + ): + def __hash__(self): + return hash("RoutersRestTransport.GetRouterStatus") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: compute.GetRouterStatusRouterRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.RouterStatusResponse: + r"""Call the get router status method over HTTP. + + Args: + request (~.compute.GetRouterStatusRouterRequest): + The request object. A request message for + Routers.GetRouterStatus. See the method + description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.RouterStatusResponse: + + """ + + http_options = ( + _BaseRoutersRestTransport._BaseGetRouterStatus._get_http_options() + ) + + request, metadata = self._interceptor.pre_get_router_status( + request, metadata + ) + transcoded_request = ( + _BaseRoutersRestTransport._BaseGetRouterStatus._get_transcoded_request( + http_options, request + ) + ) + + # Jsonify the query params + query_params = ( + _BaseRoutersRestTransport._BaseGetRouterStatus._get_query_params_json( + transcoded_request + ) + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.RoutersClient.GetRouterStatus", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "GetRouterStatus", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = RoutersRestTransport._GetRouterStatus._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.RouterStatusResponse() + pb_resp = compute.RouterStatusResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_router_status(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_router_status_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.RouterStatusResponse.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.RoutersClient.get_router_status", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "GetRouterStatus", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Insert(_BaseRoutersRestTransport._BaseInsert, RoutersRestStub): + def __hash__(self): + return hash("RoutersRestTransport.Insert") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: compute.InsertRouterRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the insert method over HTTP. + + Args: + request (~.compute.InsertRouterRequest): + The request object. A request message for Routers.Insert. + See the method description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.Operation: + Represents an Operation resource. + + Google Compute Engine has three Operation resources: + + - `Global `__ + - `Regional `__ + - `Zonal `__ + + You can use an operation resource to manage asynchronous + API requests. For more information, readHandling 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 `zoneOperations` resource. + + For more information, read Global, Regional, and Zonal + Resources. + + Note that completed Operation resources have a limited + retention period. + + """ + + http_options = _BaseRoutersRestTransport._BaseInsert._get_http_options() + + request, metadata = self._interceptor.pre_insert(request, metadata) + transcoded_request = ( + _BaseRoutersRestTransport._BaseInsert._get_transcoded_request( + http_options, request + ) + ) + + body = _BaseRoutersRestTransport._BaseInsert._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseRoutersRestTransport._BaseInsert._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.RoutersClient.Insert", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "Insert", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = RoutersRestTransport._Insert._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.Operation() + pb_resp = compute.Operation.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_insert(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_insert_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.Operation.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.RoutersClient.insert", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "Insert", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _List(_BaseRoutersRestTransport._BaseList, RoutersRestStub): + def __hash__(self): + return hash("RoutersRestTransport.List") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: compute.ListRoutersRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.RouterList: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListRoutersRequest): + The request object. A request message for Routers.List. + See the method description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.RouterList: + Contains a list of Router resources. + """ + + http_options = _BaseRoutersRestTransport._BaseList._get_http_options() + + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request = ( + _BaseRoutersRestTransport._BaseList._get_transcoded_request( + http_options, request + ) + ) + + # Jsonify the query params + query_params = _BaseRoutersRestTransport._BaseList._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.RoutersClient.List", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = RoutersRestTransport._List._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.RouterList() + pb_resp = compute.RouterList.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_list(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_router_status_with_metadata( - resp, response_metadata - ) + resp, _ = self._interceptor.post_list_with_metadata(resp, response_metadata) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = compute.RouterStatusResponse.to_json(response) + response_payload = compute.RouterList.to_json(response) except: response_payload = None http_response = { @@ -2400,19 +3324,19 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.get_router_status", + "Received response for google.cloud.compute_v1beta.RoutersClient.list", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "GetRouterStatus", + "rpcName": "List", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _Insert(_BaseRoutersRestTransport._BaseInsert, RoutersRestStub): + class _ListBgpRoutes(_BaseRoutersRestTransport._BaseListBgpRoutes, RoutersRestStub): def __hash__(self): - return hash("RoutersRestTransport.Insert") + return hash("RoutersRestTransport.ListBgpRoutes") @staticmethod def _get_response( @@ -2433,24 +3357,24 @@ def _get_response( timeout=timeout, headers=headers, params=rest_helpers.flatten_query_params(query_params, strict=True), - data=body, ) return response def __call__( self, - request: compute.InsertRouterRequest, + request: compute.ListBgpRoutesRoutersRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.Operation: - r"""Call the insert method over HTTP. + ) -> compute.RoutersListBgpRoutes: + r"""Call the list bgp routes method over HTTP. Args: - request (~.compute.InsertRouterRequest): - The request object. A request message for Routers.Insert. - See the method description for details. + request (~.compute.ListBgpRoutesRoutersRequest): + The request object. A request message for + Routers.ListBgpRoutes. See the method + description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2460,54 +3384,26 @@ def __call__( be of type `bytes`. Returns: - ~.compute.Operation: - Represents an Operation resource. - - Google Compute Engine has three Operation resources: - - - `Global `__ - - `Regional `__ - - `Zonal `__ - - You can use an operation resource to manage asynchronous - API requests. For more information, readHandling 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 `zoneOperations` resource. - - For more information, read Global, Regional, and Zonal - Resources. - - Note that completed Operation resources have a limited - retention period. + ~.compute.RoutersListBgpRoutes: """ - http_options = _BaseRoutersRestTransport._BaseInsert._get_http_options() + http_options = ( + _BaseRoutersRestTransport._BaseListBgpRoutes._get_http_options() + ) - request, metadata = self._interceptor.pre_insert(request, metadata) + request, metadata = self._interceptor.pre_list_bgp_routes(request, metadata) transcoded_request = ( - _BaseRoutersRestTransport._BaseInsert._get_transcoded_request( + _BaseRoutersRestTransport._BaseListBgpRoutes._get_transcoded_request( http_options, request ) ) - body = _BaseRoutersRestTransport._BaseInsert._get_request_body_json( - transcoded_request - ) - # Jsonify the query params - query_params = _BaseRoutersRestTransport._BaseInsert._get_query_params_json( - transcoded_request + query_params = ( + _BaseRoutersRestTransport._BaseListBgpRoutes._get_query_params_json( + transcoded_request + ) ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -2528,24 +3424,23 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.Insert", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.ListBgpRoutes", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "Insert", + "rpcName": "ListBgpRoutes", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._Insert._get_response( + response = RoutersRestTransport._ListBgpRoutes._get_response( self._host, metadata, query_params, self._session, timeout, transcoded_request, - body, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -2554,21 +3449,21 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = compute.Operation() - pb_resp = compute.Operation.pb(resp) + resp = compute.RoutersListBgpRoutes() + pb_resp = compute.RoutersListBgpRoutes.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_insert(resp) + resp = self._interceptor.post_list_bgp_routes(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_insert_with_metadata( + resp, _ = self._interceptor.post_list_bgp_routes_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = compute.Operation.to_json(response) + response_payload = compute.RoutersListBgpRoutes.to_json(response) except: response_payload = None http_response = { @@ -2577,19 +3472,19 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.insert", + "Received response for google.cloud.compute_v1beta.RoutersClient.list_bgp_routes", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "Insert", + "rpcName": "ListBgpRoutes", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _List(_BaseRoutersRestTransport._BaseList, RoutersRestStub): + class _ListNamedSets(_BaseRoutersRestTransport._BaseListNamedSets, RoutersRestStub): def __hash__(self): - return hash("RoutersRestTransport.List") + return hash("RoutersRestTransport.ListNamedSets") @staticmethod def _get_response( @@ -2615,18 +3510,19 @@ def _get_response( def __call__( self, - request: compute.ListRoutersRequest, + request: compute.ListNamedSetsRoutersRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.RouterList: - r"""Call the list method over HTTP. + ) -> compute.RoutersListNamedSets: + r"""Call the list named sets method over HTTP. Args: - request (~.compute.ListRoutersRequest): - The request object. A request message for Routers.List. - See the method description for details. + request (~.compute.ListNamedSetsRoutersRequest): + The request object. A request message for + Routers.ListNamedSets. See the method + description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2636,22 +3532,26 @@ def __call__( be of type `bytes`. Returns: - ~.compute.RouterList: - Contains a list of Router resources. + ~.compute.RoutersListNamedSets: + """ - http_options = _BaseRoutersRestTransport._BaseList._get_http_options() + http_options = ( + _BaseRoutersRestTransport._BaseListNamedSets._get_http_options() + ) - request, metadata = self._interceptor.pre_list(request, metadata) + request, metadata = self._interceptor.pre_list_named_sets(request, metadata) transcoded_request = ( - _BaseRoutersRestTransport._BaseList._get_transcoded_request( + _BaseRoutersRestTransport._BaseListNamedSets._get_transcoded_request( http_options, request ) ) # Jsonify the query params - query_params = _BaseRoutersRestTransport._BaseList._get_query_params_json( - transcoded_request + query_params = ( + _BaseRoutersRestTransport._BaseListNamedSets._get_query_params_json( + transcoded_request + ) ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -2672,17 +3572,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.List", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.ListNamedSets", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "List", + "rpcName": "ListNamedSets", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._List._get_response( + response = RoutersRestTransport._ListNamedSets._get_response( self._host, metadata, query_params, @@ -2697,19 +3597,21 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = compute.RouterList() - pb_resp = compute.RouterList.pb(resp) + resp = compute.RoutersListNamedSets() + pb_resp = compute.RoutersListNamedSets.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_list(resp) + resp = self._interceptor.post_list_named_sets(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_list_with_metadata(resp, response_metadata) + resp, _ = self._interceptor.post_list_named_sets_with_metadata( + resp, response_metadata + ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = compute.RouterList.to_json(response) + response_payload = compute.RoutersListNamedSets.to_json(response) except: response_payload = None http_response = { @@ -2718,19 +3620,21 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.list", + "Received response for google.cloud.compute_v1beta.RoutersClient.list_named_sets", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "List", + "rpcName": "ListNamedSets", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _ListBgpRoutes(_BaseRoutersRestTransport._BaseListBgpRoutes, RoutersRestStub): + class _ListRoutePolicies( + _BaseRoutersRestTransport._BaseListRoutePolicies, RoutersRestStub + ): def __hash__(self): - return hash("RoutersRestTransport.ListBgpRoutes") + return hash("RoutersRestTransport.ListRoutePolicies") @staticmethod def _get_response( @@ -2756,19 +3660,19 @@ def _get_response( def __call__( self, - request: compute.ListBgpRoutesRoutersRequest, + request: compute.ListRoutePoliciesRoutersRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.RoutersListBgpRoutes: - r"""Call the list bgp routes method over HTTP. + ) -> compute.RoutersListRoutePolicies: + r"""Call the list route policies method over HTTP. Args: - request (~.compute.ListBgpRoutesRoutersRequest): + request (~.compute.ListRoutePoliciesRoutersRequest): The request object. A request message for - Routers.ListBgpRoutes. See the method - description for details. + Routers.ListRoutePolicies. See the + method description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2778,24 +3682,24 @@ def __call__( be of type `bytes`. Returns: - ~.compute.RoutersListBgpRoutes: + ~.compute.RoutersListRoutePolicies: """ http_options = ( - _BaseRoutersRestTransport._BaseListBgpRoutes._get_http_options() + _BaseRoutersRestTransport._BaseListRoutePolicies._get_http_options() ) - request, metadata = self._interceptor.pre_list_bgp_routes(request, metadata) - transcoded_request = ( - _BaseRoutersRestTransport._BaseListBgpRoutes._get_transcoded_request( - http_options, request - ) + request, metadata = self._interceptor.pre_list_route_policies( + request, metadata + ) + transcoded_request = _BaseRoutersRestTransport._BaseListRoutePolicies._get_transcoded_request( + http_options, request ) # Jsonify the query params query_params = ( - _BaseRoutersRestTransport._BaseListBgpRoutes._get_query_params_json( + _BaseRoutersRestTransport._BaseListRoutePolicies._get_query_params_json( transcoded_request ) ) @@ -2818,17 +3722,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.ListBgpRoutes", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.ListRoutePolicies", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "ListBgpRoutes", + "rpcName": "ListRoutePolicies", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._ListBgpRoutes._get_response( + response = RoutersRestTransport._ListRoutePolicies._get_response( self._host, metadata, query_params, @@ -2843,21 +3747,23 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = compute.RoutersListBgpRoutes() - pb_resp = compute.RoutersListBgpRoutes.pb(resp) + resp = compute.RoutersListRoutePolicies() + pb_resp = compute.RoutersListRoutePolicies.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_list_bgp_routes(resp) + resp = self._interceptor.post_list_route_policies(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_list_bgp_routes_with_metadata( + resp, _ = self._interceptor.post_list_route_policies_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = compute.RoutersListBgpRoutes.to_json(response) + response_payload = compute.RoutersListRoutePolicies.to_json( + response + ) except: response_payload = None http_response = { @@ -2866,21 +3772,19 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.list_bgp_routes", + "Received response for google.cloud.compute_v1beta.RoutersClient.list_route_policies", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "ListBgpRoutes", + "rpcName": "ListRoutePolicies", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _ListRoutePolicies( - _BaseRoutersRestTransport._BaseListRoutePolicies, RoutersRestStub - ): + class _Patch(_BaseRoutersRestTransport._BasePatch, RoutersRestStub): def __hash__(self): - return hash("RoutersRestTransport.ListRoutePolicies") + return hash("RoutersRestTransport.Patch") @staticmethod def _get_response( @@ -2901,24 +3805,24 @@ def _get_response( timeout=timeout, headers=headers, params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, ) return response def __call__( self, - request: compute.ListRoutePoliciesRoutersRequest, + request: compute.PatchRouterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> compute.RoutersListRoutePolicies: - r"""Call the list route policies method over HTTP. + ) -> compute.Operation: + r"""Call the patch method over HTTP. Args: - request (~.compute.ListRoutePoliciesRoutersRequest): - The request object. A request message for - Routers.ListRoutePolicies. See the - method description for details. + request (~.compute.PatchRouterRequest): + The request object. A request message for Routers.Patch. + See the method description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -2928,26 +3832,54 @@ def __call__( be of type `bytes`. Returns: - ~.compute.RoutersListRoutePolicies: + ~.compute.Operation: + Represents an Operation resource. + + Google Compute Engine has three Operation resources: + + - `Global `__ + - `Regional `__ + - `Zonal `__ + + You can use an operation resource to manage asynchronous + API requests. For more information, readHandling 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 `zoneOperations` resource. + + For more information, read Global, Regional, and Zonal + Resources. + + Note that completed Operation resources have a limited + retention period. """ - http_options = ( - _BaseRoutersRestTransport._BaseListRoutePolicies._get_http_options() - ) + http_options = _BaseRoutersRestTransport._BasePatch._get_http_options() - request, metadata = self._interceptor.pre_list_route_policies( - request, metadata + request, metadata = self._interceptor.pre_patch(request, metadata) + transcoded_request = ( + _BaseRoutersRestTransport._BasePatch._get_transcoded_request( + http_options, request + ) ) - transcoded_request = _BaseRoutersRestTransport._BaseListRoutePolicies._get_transcoded_request( - http_options, request + + body = _BaseRoutersRestTransport._BasePatch._get_request_body_json( + transcoded_request ) # Jsonify the query params - query_params = ( - _BaseRoutersRestTransport._BaseListRoutePolicies._get_query_params_json( - transcoded_request - ) + query_params = _BaseRoutersRestTransport._BasePatch._get_query_params_json( + transcoded_request ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -2968,23 +3900,24 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.ListRoutePolicies", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.Patch", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "ListRoutePolicies", + "rpcName": "Patch", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._ListRoutePolicies._get_response( + response = RoutersRestTransport._Patch._get_response( self._host, metadata, query_params, self._session, timeout, transcoded_request, + body, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -2993,23 +3926,21 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = compute.RoutersListRoutePolicies() - pb_resp = compute.RoutersListRoutePolicies.pb(resp) + resp = compute.Operation() + pb_resp = compute.Operation.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_list_route_policies(resp) + resp = self._interceptor.post_patch(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_list_route_policies_with_metadata( + resp, _ = self._interceptor.post_patch_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = compute.RoutersListRoutePolicies.to_json( - response - ) + response_payload = compute.Operation.to_json(response) except: response_payload = None http_response = { @@ -3018,19 +3949,19 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.list_route_policies", + "Received response for google.cloud.compute_v1beta.RoutersClient.patch", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "ListRoutePolicies", + "rpcName": "Patch", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _Patch(_BaseRoutersRestTransport._BasePatch, RoutersRestStub): + class _PatchNamedSet(_BaseRoutersRestTransport._BasePatchNamedSet, RoutersRestStub): def __hash__(self): - return hash("RoutersRestTransport.Patch") + return hash("RoutersRestTransport.PatchNamedSet") @staticmethod def _get_response( @@ -3057,18 +3988,19 @@ def _get_response( def __call__( self, - request: compute.PatchRouterRequest, + request: compute.PatchNamedSetRouterRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> compute.Operation: - r"""Call the patch method over HTTP. + r"""Call the patch named set method over HTTP. Args: - request (~.compute.PatchRouterRequest): - The request object. A request message for Routers.Patch. - See the method description for details. + request (~.compute.PatchNamedSetRouterRequest): + The request object. A request message for + Routers.PatchNamedSet. See the method + description for details. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -3110,22 +4042,26 @@ def __call__( """ - http_options = _BaseRoutersRestTransport._BasePatch._get_http_options() + http_options = ( + _BaseRoutersRestTransport._BasePatchNamedSet._get_http_options() + ) - request, metadata = self._interceptor.pre_patch(request, metadata) + request, metadata = self._interceptor.pre_patch_named_set(request, metadata) transcoded_request = ( - _BaseRoutersRestTransport._BasePatch._get_transcoded_request( + _BaseRoutersRestTransport._BasePatchNamedSet._get_transcoded_request( http_options, request ) ) - body = _BaseRoutersRestTransport._BasePatch._get_request_body_json( + body = _BaseRoutersRestTransport._BasePatchNamedSet._get_request_body_json( transcoded_request ) # Jsonify the query params - query_params = _BaseRoutersRestTransport._BasePatch._get_query_params_json( - transcoded_request + query_params = ( + _BaseRoutersRestTransport._BasePatchNamedSet._get_query_params_json( + transcoded_request + ) ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -3146,17 +4082,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.cloud.compute_v1beta.RoutersClient.Patch", + f"Sending request for google.cloud.compute_v1beta.RoutersClient.PatchNamedSet", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "Patch", + "rpcName": "PatchNamedSet", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = RoutersRestTransport._Patch._get_response( + response = RoutersRestTransport._PatchNamedSet._get_response( self._host, metadata, query_params, @@ -3177,9 +4113,9 @@ def __call__( json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_patch(resp) + resp = self._interceptor.post_patch_named_set(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_patch_with_metadata( + resp, _ = self._interceptor.post_patch_named_set_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -3195,10 +4131,10 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.cloud.compute_v1beta.RoutersClient.patch", + "Received response for google.cloud.compute_v1beta.RoutersClient.patch_named_set", extra={ "serviceName": "google.cloud.compute.v1beta.Routers", - "rpcName": "Patch", + "rpcName": "PatchNamedSet", "metadata": http_response["headers"], "httpResponse": http_response, }, @@ -3876,6 +4812,192 @@ def __call__( ) return resp + class _UpdateNamedSet( + _BaseRoutersRestTransport._BaseUpdateNamedSet, RoutersRestStub + ): + def __hash__(self): + return hash("RoutersRestTransport.UpdateNamedSet") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: compute.UpdateNamedSetRouterRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the update named set method over HTTP. + + Args: + request (~.compute.UpdateNamedSetRouterRequest): + The request object. A request message for + Routers.UpdateNamedSet. See the method + description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.Operation: + Represents an Operation resource. + + Google Compute Engine has three Operation resources: + + - `Global `__ + - `Regional `__ + - `Zonal `__ + + You can use an operation resource to manage asynchronous + API requests. For more information, readHandling 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 `zoneOperations` resource. + + For more information, read Global, Regional, and Zonal + Resources. + + Note that completed Operation resources have a limited + retention period. + + """ + + http_options = ( + _BaseRoutersRestTransport._BaseUpdateNamedSet._get_http_options() + ) + + request, metadata = self._interceptor.pre_update_named_set( + request, metadata + ) + transcoded_request = ( + _BaseRoutersRestTransport._BaseUpdateNamedSet._get_transcoded_request( + http_options, request + ) + ) + + body = _BaseRoutersRestTransport._BaseUpdateNamedSet._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = ( + _BaseRoutersRestTransport._BaseUpdateNamedSet._get_query_params_json( + transcoded_request + ) + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.RoutersClient.UpdateNamedSet", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "UpdateNamedSet", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = RoutersRestTransport._UpdateNamedSet._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.Operation() + pb_resp = compute.Operation.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_update_named_set(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_update_named_set_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.Operation.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.RoutersClient.update_named_set", + extra={ + "serviceName": "google.cloud.compute.v1beta.Routers", + "rpcName": "UpdateNamedSet", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _UpdateRoutePolicy( _BaseRoutersRestTransport._BaseUpdateRoutePolicy, RoutersRestStub ): @@ -4076,6 +5198,14 @@ def delete(self) -> Callable[[compute.DeleteRouterRequest], compute.Operation]: # In C++ this would require a dynamic_cast return self._Delete(self._session, self._host, self._interceptor) # type: ignore + @property + def delete_named_set( + self, + ) -> Callable[[compute.DeleteNamedSetRouterRequest], compute.Operation]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._DeleteNamedSet(self._session, self._host, self._interceptor) # type: ignore + @property def delete_route_policy( self, @@ -4090,6 +5220,16 @@ def get(self) -> Callable[[compute.GetRouterRequest], compute.Router]: # In C++ this would require a dynamic_cast return self._Get(self._session, self._host, self._interceptor) # type: ignore + @property + def get_named_set( + self, + ) -> Callable[ + [compute.GetNamedSetRouterRequest], compute.RoutersGetNamedSetResponse + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._GetNamedSet(self._session, self._host, self._interceptor) # type: ignore + @property def get_nat_ip_info( self, @@ -4146,6 +5286,14 @@ def list_bgp_routes( # In C++ this would require a dynamic_cast return self._ListBgpRoutes(self._session, self._host, self._interceptor) # type: ignore + @property + def list_named_sets( + self, + ) -> Callable[[compute.ListNamedSetsRoutersRequest], compute.RoutersListNamedSets]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._ListNamedSets(self._session, self._host, self._interceptor) # type: ignore + @property def list_route_policies( self, @@ -4162,6 +5310,14 @@ def patch(self) -> Callable[[compute.PatchRouterRequest], compute.Operation]: # In C++ this would require a dynamic_cast return self._Patch(self._session, self._host, self._interceptor) # type: ignore + @property + def patch_named_set( + self, + ) -> Callable[[compute.PatchNamedSetRouterRequest], compute.Operation]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._PatchNamedSet(self._session, self._host, self._interceptor) # type: ignore + @property def patch_route_policy( self, @@ -4194,6 +5350,14 @@ def update(self) -> Callable[[compute.UpdateRouterRequest], compute.Operation]: # In C++ this would require a dynamic_cast return self._Update(self._session, self._host, self._interceptor) # type: ignore + @property + def update_named_set( + self, + ) -> Callable[[compute.UpdateNamedSetRouterRequest], compute.Operation]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._UpdateNamedSet(self._session, self._host, self._interceptor) # type: ignore + @property def update_route_policy( self, diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/rest_base.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/rest_base.py index 00827de3eec1..98a5cb6d7d4e 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/rest_base.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/routers/transports/rest_base.py @@ -179,6 +179,52 @@ def _get_query_params_json(transcoded_request): return query_params + class _BaseDeleteNamedSet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/beta/projects/{project}/regions/{region}/routers/{router}/deleteNamedSet", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.DeleteNamedSetRouterRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseRoutersRestTransport._BaseDeleteNamedSet._get_unset_required_fields( + query_params + ) + ) + + return query_params + class _BaseDeleteRoutePolicy: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -271,6 +317,52 @@ def _get_query_params_json(transcoded_request): return query_params + class _BaseGetNamedSet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/beta/projects/{project}/regions/{region}/routers/{router}/getNamedSet", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.GetNamedSetRouterRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseRoutersRestTransport._BaseGetNamedSet._get_unset_required_fields( + query_params + ) + ) + + return query_params + class _BaseGetNatIpInfo: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -603,6 +695,52 @@ def _get_query_params_json(transcoded_request): return query_params + class _BaseListNamedSets: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/beta/projects/{project}/regions/{region}/routers/{router}/listNamedSets", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.ListNamedSetsRoutersRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseRoutersRestTransport._BaseListNamedSets._get_unset_required_fields( + query_params + ) + ) + + return query_params + class _BaseListRoutePolicies: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -705,6 +843,62 @@ def _get_query_params_json(transcoded_request): return query_params + class _BasePatchNamedSet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/beta/projects/{project}/regions/{region}/routers/{router}/patchNamedSet", + "body": "named_set_resource", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.PatchNamedSetRouterRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=False + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseRoutersRestTransport._BasePatchNamedSet._get_unset_required_fields( + query_params + ) + ) + + return query_params + class _BasePatchRoutePolicy: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -929,6 +1123,62 @@ def _get_query_params_json(transcoded_request): return query_params + class _BaseUpdateNamedSet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/beta/projects/{project}/regions/{region}/routers/{router}/updateNamedSet", + "body": "named_set_resource", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.UpdateNamedSetRouterRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=False + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseRoutersRestTransport._BaseUpdateNamedSet._get_unset_required_fields( + query_params + ) + ) + + return query_params + class _BaseUpdateRoutePolicy: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/__init__.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/__init__.py new file mode 100644 index 000000000000..567ddc9a1e6c --- /dev/null +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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 .client import SnapshotGroupsClient + +__all__ = ("SnapshotGroupsClient",) diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/client.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/client.py new file mode 100644 index 000000000000..32b900220f95 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/client.py @@ -0,0 +1,1954 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +import functools +import json +import logging as std_logging +import os +import re +import warnings +from collections import OrderedDict +from http import HTTPStatus +from typing import ( + Callable, + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, + cast, +) + +import google.protobuf +from google.api_core import client_options as client_options_lib +from google.api_core import exceptions as core_exceptions +from google.api_core import extended_operation, gapic_v1 +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.exceptions import MutualTLSChannelError # type: ignore +from google.auth.transport import mtls # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore +from google.oauth2 import service_account # type: ignore + +from google.cloud.compute_v1beta import gapic_version as package_version + +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object, None] # type: ignore + +try: + from google.api_core import client_logging # type: ignore + + CLIENT_LOGGING_SUPPORTED = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + CLIENT_LOGGING_SUPPORTED = False + +_LOGGER = std_logging.getLogger(__name__) + +import google.api_core.extended_operation as extended_operation # type: ignore + +from google.cloud.compute_v1beta.services.snapshot_groups import pagers +from google.cloud.compute_v1beta.types import compute + +from .transports.base import DEFAULT_CLIENT_INFO, SnapshotGroupsTransport +from .transports.rest import SnapshotGroupsRestTransport + + +class SnapshotGroupsClientMeta(type): + """Metaclass for the SnapshotGroups client. + + This provides class-level methods for building and retrieving + support objects (e.g. transport) without polluting the client instance + objects. + """ + + _transport_registry = OrderedDict() # type: Dict[str, Type[SnapshotGroupsTransport]] + _transport_registry["rest"] = SnapshotGroupsRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[SnapshotGroupsTransport]: + """Returns an appropriate transport class. + + Args: + label: The name of the desired transport. If none is + provided, then the first transport in the registry is used. + + Returns: + The transport class to use. + """ + # If a specific transport is requested, return that one. + if label: + return cls._transport_registry[label] + + # No transport is requested; return the default (that is, the first one + # in the dictionary). + return next(iter(cls._transport_registry.values())) + + +class SnapshotGroupsClient(metaclass=SnapshotGroupsClientMeta): + """The SnapshotGroups API.""" + + @staticmethod + def _get_default_mtls_endpoint(api_endpoint): + """Converts api endpoint to mTLS endpoint. + + Convert "*.sandbox.googleapis.com" and "*.googleapis.com" to + "*.mtls.sandbox.googleapis.com" and "*.mtls.googleapis.com" respectively. + Args: + api_endpoint (Optional[str]): the api endpoint to convert. + Returns: + str: converted mTLS api endpoint. + """ + if not api_endpoint: + return api_endpoint + + mtls_endpoint_re = re.compile( + r"(?P[^.]+)(?P\.mtls)?(?P\.sandbox)?(?P\.googleapis\.com)?" + ) + + m = mtls_endpoint_re.match(api_endpoint) + name, mtls, sandbox, googledomain = m.groups() + if mtls or not googledomain: + return api_endpoint + + if sandbox: + return api_endpoint.replace( + "sandbox.googleapis.com", "mtls.sandbox.googleapis.com" + ) + + return api_endpoint.replace(".googleapis.com", ".mtls.googleapis.com") + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = _get_default_mtls_endpoint.__func__( # type: ignore + DEFAULT_ENDPOINT + ) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @staticmethod + def _use_client_cert_effective(): + """Returns whether client certificate should be used for mTLS if the + google-auth version supports should_use_client_cert automatic mTLS enablement. + + Alternatively, read from the GOOGLE_API_USE_CLIENT_CERTIFICATE env var. + + Returns: + bool: whether client certificate should be used for mTLS + Raises: + ValueError: (If using a version of google-auth without should_use_client_cert and + GOOGLE_API_USE_CLIENT_CERTIFICATE is set to an unexpected value.) + """ + # check if google-auth version supports should_use_client_cert for automatic mTLS enablement + if hasattr(mtls, "should_use_client_cert"): # pragma: NO COVER + return mtls.should_use_client_cert() + else: # pragma: NO COVER + # if unsupported, fallback to reading from env var + use_client_cert_str = os.getenv( + "GOOGLE_API_USE_CLIENT_CERTIFICATE", "false" + ).lower() + if use_client_cert_str not in ("true", "false"): + raise ValueError( + "Environment variable `GOOGLE_API_USE_CLIENT_CERTIFICATE` must be" + " either `true` or `false`" + ) + return use_client_cert_str == "true" + + @classmethod + def from_service_account_info(cls, info: dict, *args, **kwargs): + """Creates an instance of this client using the provided credentials + info. + + Args: + info (dict): The service account private key info. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + SnapshotGroupsClient: The constructed client. + """ + credentials = service_account.Credentials.from_service_account_info(info) + kwargs["credentials"] = credentials + return cls(*args, **kwargs) + + @classmethod + def from_service_account_file(cls, filename: str, *args, **kwargs): + """Creates an instance of this client using the provided credentials + file. + + Args: + filename (str): The path to the service account private key json + file. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + SnapshotGroupsClient: The constructed client. + """ + credentials = service_account.Credentials.from_service_account_file(filename) + kwargs["credentials"] = credentials + return cls(*args, **kwargs) + + from_service_account_json = from_service_account_file + + @property + def transport(self) -> SnapshotGroupsTransport: + """Returns the transport used by the client instance. + + Returns: + SnapshotGroupsTransport: The transport used by the client + instance. + """ + return self._transport + + @staticmethod + def common_billing_account_path( + billing_account: str, + ) -> str: + """Returns a fully-qualified billing_account string.""" + return "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + + @staticmethod + def parse_common_billing_account_path(path: str) -> Dict[str, str]: + """Parse a billing_account path into its component segments.""" + m = re.match(r"^billingAccounts/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_folder_path( + folder: str, + ) -> str: + """Returns a fully-qualified folder string.""" + return "folders/{folder}".format( + folder=folder, + ) + + @staticmethod + def parse_common_folder_path(path: str) -> Dict[str, str]: + """Parse a folder path into its component segments.""" + m = re.match(r"^folders/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_organization_path( + organization: str, + ) -> str: + """Returns a fully-qualified organization string.""" + return "organizations/{organization}".format( + organization=organization, + ) + + @staticmethod + def parse_common_organization_path(path: str) -> Dict[str, str]: + """Parse a organization path into its component segments.""" + m = re.match(r"^organizations/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_project_path( + project: str, + ) -> str: + """Returns a fully-qualified project string.""" + return "projects/{project}".format( + project=project, + ) + + @staticmethod + def parse_common_project_path(path: str) -> Dict[str, str]: + """Parse a project path into its component segments.""" + m = re.match(r"^projects/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_location_path( + project: str, + location: str, + ) -> str: + """Returns a fully-qualified location string.""" + return "projects/{project}/locations/{location}".format( + project=project, + location=location, + ) + + @staticmethod + def parse_common_location_path(path: str) -> Dict[str, str]: + """Parse a location path into its component segments.""" + m = re.match(r"^projects/(?P.+?)/locations/(?P.+?)$", path) + return m.groupdict() if m else {} + + @classmethod + def get_mtls_endpoint_and_cert_source( + cls, client_options: Optional[client_options_lib.ClientOptions] = None + ): + """Deprecated. Return the API endpoint and client cert source for mutual TLS. + + The client cert source is determined in the following order: + (1) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is not "true", the + client cert source is None. + (2) if `client_options.client_cert_source` is provided, use the provided one; if the + default client cert source exists, use the default one; otherwise the client cert + source is None. + + The API endpoint is determined in the following order: + (1) if `client_options.api_endpoint` if provided, use the provided one. + (2) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is "always", use the + default mTLS endpoint; if the environment variable is "never", use the default API + endpoint; otherwise if client cert source exists, use the default mTLS endpoint, otherwise + use the default API endpoint. + + More details can be found at https://google.aip.dev/auth/4114. + + Args: + client_options (google.api_core.client_options.ClientOptions): Custom options for the + client. Only the `api_endpoint` and `client_cert_source` properties may be used + in this method. + + Returns: + Tuple[str, Callable[[], Tuple[bytes, bytes]]]: returns the API endpoint and the + client cert source to use. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If any errors happen. + """ + + warnings.warn( + "get_mtls_endpoint_and_cert_source is deprecated. Use the api_endpoint property instead.", + DeprecationWarning, + ) + if client_options is None: + client_options = client_options_lib.ClientOptions() + use_client_cert = SnapshotGroupsClient._use_client_cert_effective() + use_mtls_endpoint = os.getenv("GOOGLE_API_USE_MTLS_ENDPOINT", "auto") + if use_mtls_endpoint not in ("auto", "never", "always"): + raise MutualTLSChannelError( + "Environment variable `GOOGLE_API_USE_MTLS_ENDPOINT` must be `never`, `auto` or `always`" + ) + + # Figure out the client cert source to use. + client_cert_source = None + if use_client_cert: + if client_options.client_cert_source: + client_cert_source = client_options.client_cert_source + elif mtls.has_default_client_cert_source(): + client_cert_source = mtls.default_client_cert_source() + + # Figure out which api endpoint to use. + if client_options.api_endpoint is not None: + api_endpoint = client_options.api_endpoint + elif use_mtls_endpoint == "always" or ( + use_mtls_endpoint == "auto" and client_cert_source + ): + api_endpoint = cls.DEFAULT_MTLS_ENDPOINT + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @staticmethod + def _read_environment_variables(): + """Returns the environment variables used by the client. + + Returns: + Tuple[bool, str, str]: returns the GOOGLE_API_USE_CLIENT_CERTIFICATE, + GOOGLE_API_USE_MTLS_ENDPOINT, and GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variables. + + Raises: + ValueError: If GOOGLE_API_USE_CLIENT_CERTIFICATE is not + any of ["true", "false"]. + google.auth.exceptions.MutualTLSChannelError: If GOOGLE_API_USE_MTLS_ENDPOINT + is not any of ["auto", "never", "always"]. + """ + use_client_cert = SnapshotGroupsClient._use_client_cert_effective() + use_mtls_endpoint = os.getenv("GOOGLE_API_USE_MTLS_ENDPOINT", "auto").lower() + universe_domain_env = os.getenv("GOOGLE_CLOUD_UNIVERSE_DOMAIN") + if use_mtls_endpoint not in ("auto", "never", "always"): + raise MutualTLSChannelError( + "Environment variable `GOOGLE_API_USE_MTLS_ENDPOINT` must be `never`, `auto` or `always`" + ) + return use_client_cert, use_mtls_endpoint, universe_domain_env + + @staticmethod + def _get_client_cert_source(provided_cert_source, use_cert_flag): + """Return the client cert source to be used by the client. + + Args: + provided_cert_source (bytes): The client certificate source provided. + use_cert_flag (bool): A flag indicating whether to use the client certificate. + + Returns: + bytes or None: The client cert source to be used by the client. + """ + client_cert_source = None + if use_cert_flag: + if provided_cert_source: + client_cert_source = provided_cert_source + elif mtls.has_default_client_cert_source(): + client_cert_source = mtls.default_client_cert_source() + return client_cert_source + + @staticmethod + def _get_api_endpoint( + api_override, client_cert_source, universe_domain, use_mtls_endpoint + ): + """Return the API endpoint used by the client. + + Args: + api_override (str): The API endpoint override. If specified, this is always + the return value of this function and the other arguments are not used. + client_cert_source (bytes): The client certificate source used by the client. + universe_domain (str): The universe domain used by the client. + use_mtls_endpoint (str): How to use the mTLS endpoint, which depends also on the other parameters. + Possible values are "always", "auto", or "never". + + Returns: + str: The API endpoint to be used by the client. + """ + if api_override is not None: + api_endpoint = api_override + elif use_mtls_endpoint == "always" or ( + use_mtls_endpoint == "auto" and client_cert_source + ): + _default_universe = SnapshotGroupsClient._DEFAULT_UNIVERSE + if universe_domain != _default_universe: + raise MutualTLSChannelError( + f"mTLS is not supported in any universe other than {_default_universe}." + ) + api_endpoint = SnapshotGroupsClient.DEFAULT_MTLS_ENDPOINT + else: + api_endpoint = SnapshotGroupsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=universe_domain + ) + return api_endpoint + + @staticmethod + def _get_universe_domain( + client_universe_domain: Optional[str], universe_domain_env: Optional[str] + ) -> str: + """Return the universe domain used by the client. + + Args: + client_universe_domain (Optional[str]): The universe domain configured via the client options. + universe_domain_env (Optional[str]): The universe domain configured via the "GOOGLE_CLOUD_UNIVERSE_DOMAIN" environment variable. + + Returns: + str: The universe domain to be used by the client. + + Raises: + ValueError: If the universe domain is an empty string. + """ + universe_domain = SnapshotGroupsClient._DEFAULT_UNIVERSE + if client_universe_domain is not None: + universe_domain = client_universe_domain + elif universe_domain_env is not None: + universe_domain = universe_domain_env + if len(universe_domain.strip()) == 0: + raise ValueError("Universe Domain cannot be an empty string.") + return universe_domain + + def _validate_universe_domain(self): + """Validates client's and credentials' universe domains are consistent. + + Returns: + bool: True iff the configured universe domain is valid. + + Raises: + ValueError: If the configured universe domain is not valid. + """ + + # NOTE (b/349488459): universe validation is disabled until further notice. + return True + + def _add_cred_info_for_auth_errors( + self, error: core_exceptions.GoogleAPICallError + ) -> None: + """Adds credential info string to error details for 401/403/404 errors. + + Args: + error (google.api_core.exceptions.GoogleAPICallError): The error to add the cred info. + """ + if error.code not in [ + HTTPStatus.UNAUTHORIZED, + HTTPStatus.FORBIDDEN, + HTTPStatus.NOT_FOUND, + ]: + return + + cred = self._transport._credentials + + # get_cred_info is only available in google-auth>=2.35.0 + if not hasattr(cred, "get_cred_info"): + return + + # ignore the type check since pypy test fails when get_cred_info + # is not available + cred_info = cred.get_cred_info() # type: ignore + if cred_info and hasattr(error._details, "append"): + error._details.append(json.dumps(cred_info)) + + @property + def api_endpoint(self): + """Return the API endpoint used by the client instance. + + Returns: + str: The API endpoint used by the client instance. + """ + return self._api_endpoint + + @property + def universe_domain(self) -> str: + """Return the universe domain used by the client instance. + + Returns: + str: The universe domain used by the client instance. + """ + return self._universe_domain + + def __init__( + self, + *, + credentials: Optional[ga_credentials.Credentials] = None, + transport: Optional[ + Union[str, SnapshotGroupsTransport, Callable[..., SnapshotGroupsTransport]] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the snapshot groups client. + + Args: + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + transport (Optional[Union[str,SnapshotGroupsTransport,Callable[..., SnapshotGroupsTransport]]]): + The transport to use, or a Callable that constructs and returns a new transport. + If a Callable is given, it will be called with the same set of initialization + arguments as used in the SnapshotGroupsTransport constructor. + If set to None, a transport is chosen automatically. + NOTE: "rest" transport functionality is currently in a + beta state (preview). We welcome your feedback via an + issue in this library's source repository. + client_options (Optional[Union[google.api_core.client_options.ClientOptions, dict]]): + Custom options for the client. + + 1. The ``api_endpoint`` property can be used to override the + default endpoint provided by the client when ``transport`` is + not explicitly provided. Only if this property is not set and + ``transport`` was not explicitly provided, the endpoint is + determined by the GOOGLE_API_USE_MTLS_ENDPOINT environment + variable, which have one of the following values: + "always" (always use the default mTLS endpoint), "never" (always + use the default regular endpoint) and "auto" (auto-switch to the + default mTLS endpoint if client certificate is present; this is + the default value). + + 2. If the GOOGLE_API_USE_CLIENT_CERTIFICATE environment variable + is "true", then the ``client_cert_source`` property can be used + to provide a client certificate for mTLS transport. If + not provided, the default SSL client certificate will be used if + present. If GOOGLE_API_USE_CLIENT_CERTIFICATE is "false" or not + set, no client certificate will be used. + + 3. The ``universe_domain`` property can be used to override the + default "googleapis.com" universe. Note that the ``api_endpoint`` + property still takes precedence; and ``universe_domain`` is + currently not supported for mTLS. + + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS transport + creation failed for any reason. + """ + self._client_options = client_options + if isinstance(self._client_options, dict): + self._client_options = client_options_lib.from_dict(self._client_options) + if self._client_options is None: + self._client_options = client_options_lib.ClientOptions() + self._client_options = cast( + client_options_lib.ClientOptions, self._client_options + ) + + universe_domain_opt = getattr(self._client_options, "universe_domain", None) + + self._use_client_cert, self._use_mtls_endpoint, self._universe_domain_env = ( + SnapshotGroupsClient._read_environment_variables() + ) + self._client_cert_source = SnapshotGroupsClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + self._universe_domain = SnapshotGroupsClient._get_universe_domain( + universe_domain_opt, self._universe_domain_env + ) + self._api_endpoint = None # updated below, depending on `transport` + + # Initialize the universe domain validation. + self._is_universe_domain_valid = False + + if CLIENT_LOGGING_SUPPORTED: # pragma: NO COVER + # Setup logging. + client_logging.initialize_logging() + + api_key_value = getattr(self._client_options, "api_key", None) + if api_key_value and credentials: + raise ValueError( + "client_options.api_key and credentials are mutually exclusive" + ) + + # Save or instantiate the transport. + # Ordinarily, we provide the transport, but allowing a custom transport + # instance provides an extensibility point for unusual situations. + transport_provided = isinstance(transport, SnapshotGroupsTransport) + if transport_provided: + # transport is a SnapshotGroupsTransport instance. + if credentials or self._client_options.credentials_file or api_key_value: + raise ValueError( + "When providing a transport instance, " + "provide its credentials directly." + ) + if self._client_options.scopes: + raise ValueError( + "When providing a transport instance, provide its scopes directly." + ) + self._transport = cast(SnapshotGroupsTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = ( + self._api_endpoint + or SnapshotGroupsClient._get_api_endpoint( + self._client_options.api_endpoint, + self._client_cert_source, + self._universe_domain, + self._use_mtls_endpoint, + ) + ) + + if not transport_provided: + import google.auth._default # type: ignore + + if api_key_value and hasattr( + google.auth._default, "get_api_key_credentials" + ): + credentials = google.auth._default.get_api_key_credentials( + api_key_value + ) + + transport_init: Union[ + Type[SnapshotGroupsTransport], Callable[..., SnapshotGroupsTransport] + ] = ( + SnapshotGroupsClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast(Callable[..., SnapshotGroupsTransport], transport) + ) + # initialize with the provided callable or the passed in class + self._transport = transport_init( + credentials=credentials, + credentials_file=self._client_options.credentials_file, + host=self._api_endpoint, + scopes=self._client_options.scopes, + client_cert_source_for_mtls=self._client_cert_source, + quota_project_id=self._client_options.quota_project_id, + client_info=client_info, + always_use_jwt_access=True, + api_audience=self._client_options.api_audience, + ) + + if "async" not in str(self._transport): + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + std_logging.DEBUG + ): # pragma: NO COVER + _LOGGER.debug( + "Created client `google.cloud.compute_v1beta.SnapshotGroupsClient`.", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "universeDomain": getattr( + self._transport._credentials, "universe_domain", "" + ), + "credentialsType": f"{type(self._transport._credentials).__module__}.{type(self._transport._credentials).__qualname__}", + "credentialsInfo": getattr( + self.transport._credentials, "get_cred_info", lambda: None + )(), + } + if hasattr(self._transport, "_credentials") + else { + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "credentialsType": None, + }, + ) + + def delete_unary( + self, + request: Optional[Union[compute.DeleteSnapshotGroupRequest, dict]] = None, + *, + project: Optional[str] = None, + snapshot_group: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Deletes the specified SnapshotGroup resource + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_delete(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.DeleteSnapshotGroupRequest( + project="project_value", + snapshot_group="snapshot_group_value", + ) + + # Make the request + response = client.delete(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.DeleteSnapshotGroupRequest, dict]): + The request object. A request message for + SnapshotGroups.Delete. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + snapshot_group (str): + Name of the SnapshotGroup resource to + delete. + + This corresponds to the ``snapshot_group`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, snapshot_group] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.DeleteSnapshotGroupRequest): + request = compute.DeleteSnapshotGroupRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if snapshot_group is not None: + request.snapshot_group = snapshot_group + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.delete] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("snapshot_group", request.snapshot_group), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def delete( + self, + request: Optional[Union[compute.DeleteSnapshotGroupRequest, dict]] = None, + *, + project: Optional[str] = None, + snapshot_group: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> extended_operation.ExtendedOperation: + r"""Deletes the specified SnapshotGroup resource + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_delete(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.DeleteSnapshotGroupRequest( + project="project_value", + snapshot_group="snapshot_group_value", + ) + + # Make the request + response = client.delete(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.DeleteSnapshotGroupRequest, dict]): + The request object. A request message for + SnapshotGroups.Delete. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + snapshot_group (str): + Name of the SnapshotGroup resource to + delete. + + This corresponds to the ``snapshot_group`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, snapshot_group] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.DeleteSnapshotGroupRequest): + request = compute.DeleteSnapshotGroupRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if snapshot_group is not None: + request.snapshot_group = snapshot_group + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.delete] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("snapshot_group", request.snapshot_group), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + operation_service = self._transport._global_operations_client + operation_request = compute.GetGlobalOperationRequest() + operation_request.project = request.project + operation_request.operation = response.name + + get_operation = functools.partial(operation_service.get, operation_request) + # Cancel is not part of extended operations yet. + cancel_operation = lambda: None + + # Note: this class is an implementation detail to provide a uniform + # set of names for certain fields in the extended operation proto message. + # See google.api_core.extended_operation.ExtendedOperation for details + # on these properties and the expected interface. + class _CustomOperation(extended_operation.ExtendedOperation): + @property + def error_message(self): + return self._extended_operation.http_error_message + + @property + def error_code(self): + return self._extended_operation.http_error_status_code + + response = _CustomOperation.make(get_operation, cancel_operation, response) + + # Done; return the response. + return response + + def get( + self, + request: Optional[Union[compute.GetSnapshotGroupRequest, dict]] = None, + *, + project: Optional[str] = None, + snapshot_group: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.SnapshotGroup: + r"""returns the specified SnapshotGroup resource. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_get(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.GetSnapshotGroupRequest( + project="project_value", + snapshot_group="snapshot_group_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.GetSnapshotGroupRequest, dict]): + The request object. A request message for + SnapshotGroups.Get. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + snapshot_group (str): + Name of the SnapshotGroup resource to + return. + + This corresponds to the ``snapshot_group`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.types.SnapshotGroup: + Represents a SnapshotGroup resource. + + A snapshot group is a set of snapshots + that represents a point in time state of + a consistency group. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, snapshot_group] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.GetSnapshotGroupRequest): + request = compute.GetSnapshotGroupRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if snapshot_group is not None: + request.snapshot_group = snapshot_group + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("snapshot_group", request.snapshot_group), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def get_iam_policy( + self, + request: Optional[Union[compute.GetIamPolicySnapshotGroupRequest, dict]] = None, + *, + project: Optional[str] = None, + resource: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Policy: + r"""Gets the access control policy for a resource. May be + empty if no such policy or resource exists. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_get_iam_policy(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.GetIamPolicySnapshotGroupRequest( + project="project_value", + resource="resource_value", + ) + + # Make the request + response = client.get_iam_policy(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.GetIamPolicySnapshotGroupRequest, dict]): + The request object. A request message for + SnapshotGroups.GetIamPolicy. See the + method description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + resource (str): + Name or id of the resource for this + request. + + This corresponds to the ``resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.types.Policy: + 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:** + + :literal:`` { "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:** + + :literal:`` 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/). + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, resource] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.GetIamPolicySnapshotGroupRequest): + request = compute.GetIamPolicySnapshotGroupRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if resource is not None: + request.resource = resource + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_iam_policy] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("resource", request.resource), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def insert_unary( + self, + request: Optional[Union[compute.InsertSnapshotGroupRequest, dict]] = None, + *, + project: Optional[str] = None, + snapshot_group_resource: Optional[compute.SnapshotGroup] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Creates a snapshot group in the specified project + using the data included in the request. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_insert(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.InsertSnapshotGroupRequest( + project="project_value", + ) + + # Make the request + response = client.insert(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.InsertSnapshotGroupRequest, dict]): + The request object. A request message for + SnapshotGroups.Insert. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + snapshot_group_resource (google.cloud.compute_v1beta.types.SnapshotGroup): + The body resource for this request + This corresponds to the ``snapshot_group_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, snapshot_group_resource] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.InsertSnapshotGroupRequest): + request = compute.InsertSnapshotGroupRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if snapshot_group_resource is not None: + request.snapshot_group_resource = snapshot_group_resource + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.insert] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def insert( + self, + request: Optional[Union[compute.InsertSnapshotGroupRequest, dict]] = None, + *, + project: Optional[str] = None, + snapshot_group_resource: Optional[compute.SnapshotGroup] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> extended_operation.ExtendedOperation: + r"""Creates a snapshot group in the specified project + using the data included in the request. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_insert(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.InsertSnapshotGroupRequest( + project="project_value", + ) + + # Make the request + response = client.insert(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.InsertSnapshotGroupRequest, dict]): + The request object. A request message for + SnapshotGroups.Insert. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + snapshot_group_resource (google.cloud.compute_v1beta.types.SnapshotGroup): + The body resource for this request + This corresponds to the ``snapshot_group_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.api_core.extended_operation.ExtendedOperation: + An object representing a extended + long-running operation. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, snapshot_group_resource] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.InsertSnapshotGroupRequest): + request = compute.InsertSnapshotGroupRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if snapshot_group_resource is not None: + request.snapshot_group_resource = snapshot_group_resource + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.insert] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + operation_service = self._transport._global_operations_client + operation_request = compute.GetGlobalOperationRequest() + operation_request.project = request.project + operation_request.operation = response.name + + get_operation = functools.partial(operation_service.get, operation_request) + # Cancel is not part of extended operations yet. + cancel_operation = lambda: None + + # Note: this class is an implementation detail to provide a uniform + # set of names for certain fields in the extended operation proto message. + # See google.api_core.extended_operation.ExtendedOperation for details + # on these properties and the expected interface. + class _CustomOperation(extended_operation.ExtendedOperation): + @property + def error_message(self): + return self._extended_operation.http_error_message + + @property + def error_code(self): + return self._extended_operation.http_error_status_code + + response = _CustomOperation.make(get_operation, cancel_operation, response) + + # Done; return the response. + return response + + def list( + self, + request: Optional[Union[compute.ListSnapshotGroupsRequest, dict]] = None, + *, + project: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> pagers.ListPager: + r"""retrieves the list of SnapshotGroup resources + contained within the specified project. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_list(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.ListSnapshotGroupsRequest( + project="project_value", + ) + + # Make the request + page_result = client.list(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.ListSnapshotGroupsRequest, dict]): + The request object. A request message for + SnapshotGroups.List. See the method + description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.services.snapshot_groups.pagers.ListPager: + Contains a list of SnapshotGroup + resources. + Iterating over this object will yield + results and resolve additional pages + automatically. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.ListSnapshotGroupsRequest): + request = compute.ListSnapshotGroupsRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.list] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.ListPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def set_iam_policy( + self, + request: Optional[Union[compute.SetIamPolicySnapshotGroupRequest, dict]] = None, + *, + project: Optional[str] = None, + resource: Optional[str] = None, + global_set_policy_request_resource: Optional[ + compute.GlobalSetPolicyRequest + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Policy: + r"""Sets the access control policy on the specified + resource. Replaces any existing policy. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_set_iam_policy(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.SetIamPolicySnapshotGroupRequest( + project="project_value", + resource="resource_value", + ) + + # Make the request + response = client.set_iam_policy(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.SetIamPolicySnapshotGroupRequest, dict]): + The request object. A request message for + SnapshotGroups.SetIamPolicy. See the + method description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + resource (str): + Name or id of the resource for this + request. + + This corresponds to the ``resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + global_set_policy_request_resource (google.cloud.compute_v1beta.types.GlobalSetPolicyRequest): + The body resource for this request + This corresponds to the ``global_set_policy_request_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.types.Policy: + 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:** + + :literal:`` { "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:** + + :literal:`` 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/). + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, resource, global_set_policy_request_resource] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.SetIamPolicySnapshotGroupRequest): + request = compute.SetIamPolicySnapshotGroupRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if resource is not None: + request.resource = resource + if global_set_policy_request_resource is not None: + request.global_set_policy_request_resource = ( + global_set_policy_request_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.set_iam_policy] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("resource", request.resource), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def test_iam_permissions( + self, + request: Optional[ + Union[compute.TestIamPermissionsSnapshotGroupRequest, dict] + ] = None, + *, + project: Optional[str] = None, + resource: Optional[str] = None, + test_permissions_request_resource: Optional[ + compute.TestPermissionsRequest + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.TestPermissionsResponse: + r"""Returns permissions that a caller has on the + specified resource. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.cloud import compute_v1beta + + def sample_test_iam_permissions(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.TestIamPermissionsSnapshotGroupRequest( + project="project_value", + resource="resource_value", + ) + + # Make the request + response = client.test_iam_permissions(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1beta.types.TestIamPermissionsSnapshotGroupRequest, dict]): + The request object. A request message for + SnapshotGroups.TestIamPermissions. See + the method description for details. + project (str): + Project ID for this request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + resource (str): + Name or id of the resource for this + request. + + This corresponds to the ``resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + test_permissions_request_resource (google.cloud.compute_v1beta.types.TestPermissionsRequest): + The body resource for this request + This corresponds to the ``test_permissions_request_resource`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.cloud.compute_v1beta.types.TestPermissionsResponse: + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [project, resource, test_permissions_request_resource] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, compute.TestIamPermissionsSnapshotGroupRequest): + request = compute.TestIamPermissionsSnapshotGroupRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if resource is not None: + request.resource = resource + if test_permissions_request_resource is not None: + request.test_permissions_request_resource = ( + test_permissions_request_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.test_iam_permissions] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + ( + ("project", request.project), + ("resource", request.resource), + ) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def __enter__(self) -> "SnapshotGroupsClient": + return self + + def __exit__(self, type, value, traceback): + """Releases underlying transport's resources. + + .. warning:: + ONLY use as a context manager if the transport is NOT shared + with other clients! Exiting the with block will CLOSE the transport + and may cause errors in other clients! + """ + self.transport.close() + + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) + +if hasattr(DEFAULT_CLIENT_INFO, "protobuf_runtime_version"): # pragma: NO COVER + DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("SnapshotGroupsClient",) diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/pagers.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/pagers.py new file mode 100644 index 000000000000..525b782f3995 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/pagers.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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 typing import ( + Any, + AsyncIterator, + Awaitable, + Callable, + Iterator, + Optional, + Sequence, + Tuple, + Union, +) + +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.api_core import retry_async as retries_async + +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] + OptionalAsyncRetry = Union[ + retries_async.AsyncRetry, gapic_v1.method._MethodDefault, None + ] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object, None] # type: ignore + OptionalAsyncRetry = Union[retries_async.AsyncRetry, object, None] # type: ignore + +from google.cloud.compute_v1beta.types import compute + + +class ListPager: + """A pager for iterating through ``list`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1beta.types.ListSnapshotGroups` object, and + provides an ``__iter__`` method to iterate through its + ``items`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``List`` requests and continue to iterate + through the ``items`` field on the + corresponding responses. + + All the usual :class:`google.cloud.compute_v1beta.types.ListSnapshotGroups` + attributes are available on the pager. If multiple requests are made, only + the most recent response is retained, and thus used for attribute lookup. + """ + + def __init__( + self, + method: Callable[..., compute.ListSnapshotGroups], + request: compute.ListSnapshotGroupsRequest, + response: compute.ListSnapshotGroups, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ): + """Instantiate the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.cloud.compute_v1beta.types.ListSnapshotGroupsRequest): + The initial request object. + response (google.cloud.compute_v1beta.types.ListSnapshotGroups): + The initial response object. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + self._method = method + self._request = compute.ListSnapshotGroupsRequest(request) + self._response = response + self._retry = retry + self._timeout = timeout + self._metadata = metadata + + def __getattr__(self, name: str) -> Any: + return getattr(self._response, name) + + @property + def pages(self) -> Iterator[compute.ListSnapshotGroups]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = self._method( + self._request, + retry=self._retry, + timeout=self._timeout, + metadata=self._metadata, + ) + yield self._response + + def __iter__(self) -> Iterator[compute.SnapshotGroup]: + for page in self.pages: + yield from page.items + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/README.rst b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/README.rst new file mode 100644 index 000000000000..847feb6bc471 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/README.rst @@ -0,0 +1,9 @@ + +transport inheritance structure +_______________________________ + +`SnapshotGroupsTransport` is the ABC for all transports. +- public child `SnapshotGroupsGrpcTransport` for sync gRPC transport (defined in `grpc.py`). +- public child `SnapshotGroupsGrpcAsyncIOTransport` for async gRPC transport (defined in `grpc_asyncio.py`). +- private child `_BaseSnapshotGroupsRestTransport` for base REST transport with inner classes `_BaseMETHOD` (defined in `rest_base.py`). +- public child `SnapshotGroupsRestTransport` for sync REST transport with inner classes `METHOD` derived from the parent's corresponding `_BaseMETHOD` classes (defined in `rest.py`). diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/__init__.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/__init__.py new file mode 100644 index 000000000000..c31e49cde853 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/__init__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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 collections import OrderedDict +from typing import Dict, Type + +from .base import SnapshotGroupsTransport +from .rest import SnapshotGroupsRestInterceptor, SnapshotGroupsRestTransport + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[SnapshotGroupsTransport]] +_transport_registry["rest"] = SnapshotGroupsRestTransport + +__all__ = ( + "SnapshotGroupsTransport", + "SnapshotGroupsRestTransport", + "SnapshotGroupsRestInterceptor", +) diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/base.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/base.py new file mode 100644 index 000000000000..d81c1583324d --- /dev/null +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/base.py @@ -0,0 +1,272 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +import abc +from typing import Any, Awaitable, Callable, Dict, Optional, Sequence, Union + +import google.api_core +import google.auth # type: ignore +import google.protobuf +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.oauth2 import service_account # type: ignore + +from google.cloud.compute_v1beta import gapic_version as package_version +from google.cloud.compute_v1beta.services import global_operations +from google.cloud.compute_v1beta.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) + +if hasattr(DEFAULT_CLIENT_INFO, "protobuf_runtime_version"): # pragma: NO COVER + DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class SnapshotGroupsTransport(abc.ABC): + """Abstract transport class for SnapshotGroups.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ) + + DEFAULT_HOST: str = "compute.googleapis.com" + + def __init__( + self, + *, + host: str = DEFAULT_HOST, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + api_audience: Optional[str] = None, + **kwargs, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to (default: 'compute.googleapis.com'). + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + credentials_file (Optional[str]): Deprecated. A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is mutually exclusive with credentials. This argument will be + removed in the next major version of this library. + scopes (Optional[Sequence[str]]): A list of scopes. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + """ + self._extended_operations_services: Dict[str, Any] = {} + + # Save the scopes. + self._scopes = scopes + if not hasattr(self, "_ignore_credentials"): + self._ignore_credentials: bool = False + + # If no credentials are provided, then determine the appropriate + # defaults. + if credentials and credentials_file: + raise core_exceptions.DuplicateCredentialArgs( + "'credentials_file' and 'credentials' are mutually exclusive" + ) + + if credentials_file is not None: + credentials, _ = google.auth.load_credentials_from_file( + credentials_file, + scopes=scopes, + quota_project_id=quota_project_id, + default_scopes=self.AUTH_SCOPES, + ) + elif credentials is None and not self._ignore_credentials: + credentials, _ = google.auth.default( + scopes=scopes, + quota_project_id=quota_project_id, + default_scopes=self.AUTH_SCOPES, + ) + # Don't apply audience if the credentials file passed from user. + if hasattr(credentials, "with_gdch_audience"): + credentials = credentials.with_gdch_audience( + api_audience if api_audience else host + ) + + # If the credentials are service account credentials, then always try to use self signed JWT. + if ( + always_use_jwt_access + and isinstance(credentials, service_account.Credentials) + and hasattr(service_account.Credentials, "with_always_use_jwt_access") + ): + credentials = credentials.with_always_use_jwt_access(True) + + # Save the credentials. + self._credentials = credentials + + # Save the hostname. Default to port 443 (HTTPS) if none is specified. + if ":" not in host: + host += ":443" + self._host = host + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.delete: gapic_v1.method.wrap_method( + self.delete, + default_timeout=None, + client_info=client_info, + ), + self.get: gapic_v1.method.wrap_method( + self.get, + default_timeout=None, + client_info=client_info, + ), + self.get_iam_policy: gapic_v1.method.wrap_method( + self.get_iam_policy, + default_timeout=None, + client_info=client_info, + ), + self.insert: gapic_v1.method.wrap_method( + self.insert, + default_timeout=None, + client_info=client_info, + ), + self.list: gapic_v1.method.wrap_method( + self.list, + default_timeout=None, + client_info=client_info, + ), + self.set_iam_policy: gapic_v1.method.wrap_method( + self.set_iam_policy, + default_timeout=None, + client_info=client_info, + ), + self.test_iam_permissions: gapic_v1.method.wrap_method( + self.test_iam_permissions, + default_timeout=None, + client_info=client_info, + ), + } + + def close(self): + """Closes resources associated with the transport. + + .. warning:: + Only call this method if the transport is NOT shared + with other clients - this may cause errors in other clients! + """ + raise NotImplementedError() + + @property + def delete( + self, + ) -> Callable[ + [compute.DeleteSnapshotGroupRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + + @property + def get( + self, + ) -> Callable[ + [compute.GetSnapshotGroupRequest], + Union[compute.SnapshotGroup, Awaitable[compute.SnapshotGroup]], + ]: + raise NotImplementedError() + + @property + def get_iam_policy( + self, + ) -> Callable[ + [compute.GetIamPolicySnapshotGroupRequest], + Union[compute.Policy, Awaitable[compute.Policy]], + ]: + raise NotImplementedError() + + @property + def insert( + self, + ) -> Callable[ + [compute.InsertSnapshotGroupRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + + @property + def list( + self, + ) -> Callable[ + [compute.ListSnapshotGroupsRequest], + Union[compute.ListSnapshotGroups, Awaitable[compute.ListSnapshotGroups]], + ]: + raise NotImplementedError() + + @property + def set_iam_policy( + self, + ) -> Callable[ + [compute.SetIamPolicySnapshotGroupRequest], + Union[compute.Policy, Awaitable[compute.Policy]], + ]: + raise NotImplementedError() + + @property + def test_iam_permissions( + self, + ) -> Callable[ + [compute.TestIamPermissionsSnapshotGroupRequest], + Union[ + compute.TestPermissionsResponse, Awaitable[compute.TestPermissionsResponse] + ], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + @property + def _global_operations_client(self) -> global_operations.GlobalOperationsClient: + ex_op_service = self._extended_operations_services.get("global_operations") + if not ex_op_service: + ex_op_service = global_operations.GlobalOperationsClient( + credentials=self._credentials, + transport=self.kind, + ) + self._extended_operations_services["global_operations"] = ex_op_service + + return ex_op_service + + +__all__ = ("SnapshotGroupsTransport",) diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/rest.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/rest.py new file mode 100644 index 000000000000..b4b8bff509b3 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/rest.py @@ -0,0 +1,1878 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +import dataclasses +import json # type: ignore +import logging +import warnings +from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union + +import google.protobuf +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1, rest_helpers, rest_streaming +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport.requests import AuthorizedSession # type: ignore +from google.protobuf import json_format +from requests import __version__ as requests_version + +from google.cloud.compute_v1beta.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseSnapshotGroupsRestTransport + +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object, None] # type: ignore + +try: + from google.api_core import client_logging # type: ignore + + CLIENT_LOGGING_SUPPORTED = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + CLIENT_LOGGING_SUPPORTED = False + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=BASE_DEFAULT_CLIENT_INFO.gapic_version, + grpc_version=None, + rest_version=f"requests@{requests_version}", +) + +if hasattr(DEFAULT_CLIENT_INFO, "protobuf_runtime_version"): # pragma: NO COVER + DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class SnapshotGroupsRestInterceptor: + """Interceptor for SnapshotGroups. + + Interceptors are used to manipulate requests, request metadata, and responses + in arbitrary ways. + Example use cases include: + * Logging + * Verifying requests according to service or custom semantics + * Stripping extraneous information from responses + + These use cases and more can be enabled by injecting an + instance of a custom subclass when constructing the SnapshotGroupsRestTransport. + + .. code-block:: python + class MyCustomSnapshotGroupsInterceptor(SnapshotGroupsRestInterceptor): + def pre_delete(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_delete(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_get(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_get(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_get_iam_policy(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_get_iam_policy(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_insert(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_insert(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_list(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_list(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_set_iam_policy(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_set_iam_policy(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_test_iam_permissions(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_test_iam_permissions(self, response): + logging.log(f"Received response: {response}") + return response + + transport = SnapshotGroupsRestTransport(interceptor=MyCustomSnapshotGroupsInterceptor()) + client = SnapshotGroupsClient(transport=transport) + + + """ + + def pre_delete( + self, + request: compute.DeleteSnapshotGroupRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.DeleteSnapshotGroupRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for delete + + Override in a subclass to manipulate the request or metadata + before they are sent to the SnapshotGroups server. + """ + return request, metadata + + def post_delete(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for delete + + DEPRECATED. Please use the `post_delete_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the SnapshotGroups server but before + it is returned to user code. This `post_delete` interceptor runs + before the `post_delete_with_metadata` interceptor. + """ + return response + + def post_delete_with_metadata( + self, + response: compute.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for delete + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the SnapshotGroups server but before it is returned to user code. + + We recommend only using this `post_delete_with_metadata` + interceptor in new development instead of the `post_delete` interceptor. + When both interceptors are used, this `post_delete_with_metadata` interceptor runs after the + `post_delete` interceptor. The (possibly modified) response returned by + `post_delete` will be passed to + `post_delete_with_metadata`. + """ + return response, metadata + + def pre_get( + self, + request: compute.GetSnapshotGroupRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GetSnapshotGroupRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for get + + Override in a subclass to manipulate the request or metadata + before they are sent to the SnapshotGroups server. + """ + return request, metadata + + def post_get(self, response: compute.SnapshotGroup) -> compute.SnapshotGroup: + """Post-rpc interceptor for get + + DEPRECATED. Please use the `post_get_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the SnapshotGroups server but before + it is returned to user code. This `post_get` interceptor runs + before the `post_get_with_metadata` interceptor. + """ + return response + + def post_get_with_metadata( + self, + response: compute.SnapshotGroup, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.SnapshotGroup, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for get + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the SnapshotGroups server but before it is returned to user code. + + We recommend only using this `post_get_with_metadata` + interceptor in new development instead of the `post_get` interceptor. + When both interceptors are used, this `post_get_with_metadata` interceptor runs after the + `post_get` interceptor. The (possibly modified) response returned by + `post_get` will be passed to + `post_get_with_metadata`. + """ + return response, metadata + + def pre_get_iam_policy( + self, + request: compute.GetIamPolicySnapshotGroupRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GetIamPolicySnapshotGroupRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for get_iam_policy + + Override in a subclass to manipulate the request or metadata + before they are sent to the SnapshotGroups server. + """ + return request, metadata + + def post_get_iam_policy(self, response: compute.Policy) -> compute.Policy: + """Post-rpc interceptor for get_iam_policy + + DEPRECATED. Please use the `post_get_iam_policy_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the SnapshotGroups server but before + it is returned to user code. This `post_get_iam_policy` interceptor runs + before the `post_get_iam_policy_with_metadata` interceptor. + """ + return response + + def post_get_iam_policy_with_metadata( + self, + response: compute.Policy, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.Policy, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for get_iam_policy + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the SnapshotGroups server but before it is returned to user code. + + We recommend only using this `post_get_iam_policy_with_metadata` + interceptor in new development instead of the `post_get_iam_policy` interceptor. + When both interceptors are used, this `post_get_iam_policy_with_metadata` interceptor runs after the + `post_get_iam_policy` interceptor. The (possibly modified) response returned by + `post_get_iam_policy` will be passed to + `post_get_iam_policy_with_metadata`. + """ + return response, metadata + + def pre_insert( + self, + request: compute.InsertSnapshotGroupRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.InsertSnapshotGroupRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for insert + + Override in a subclass to manipulate the request or metadata + before they are sent to the SnapshotGroups server. + """ + return request, metadata + + def post_insert(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for insert + + DEPRECATED. Please use the `post_insert_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the SnapshotGroups server but before + it is returned to user code. This `post_insert` interceptor runs + before the `post_insert_with_metadata` interceptor. + """ + return response + + def post_insert_with_metadata( + self, + response: compute.Operation, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.Operation, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for insert + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the SnapshotGroups server but before it is returned to user code. + + We recommend only using this `post_insert_with_metadata` + interceptor in new development instead of the `post_insert` interceptor. + When both interceptors are used, this `post_insert_with_metadata` interceptor runs after the + `post_insert` interceptor. The (possibly modified) response returned by + `post_insert` will be passed to + `post_insert_with_metadata`. + """ + return response, metadata + + def pre_list( + self, + request: compute.ListSnapshotGroupsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.ListSnapshotGroupsRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for list + + Override in a subclass to manipulate the request or metadata + before they are sent to the SnapshotGroups server. + """ + return request, metadata + + def post_list( + self, response: compute.ListSnapshotGroups + ) -> compute.ListSnapshotGroups: + """Post-rpc interceptor for list + + DEPRECATED. Please use the `post_list_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the SnapshotGroups server but before + it is returned to user code. This `post_list` interceptor runs + before the `post_list_with_metadata` interceptor. + """ + return response + + def post_list_with_metadata( + self, + response: compute.ListSnapshotGroups, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ListSnapshotGroups, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for list + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the SnapshotGroups server but before it is returned to user code. + + We recommend only using this `post_list_with_metadata` + interceptor in new development instead of the `post_list` interceptor. + When both interceptors are used, this `post_list_with_metadata` interceptor runs after the + `post_list` interceptor. The (possibly modified) response returned by + `post_list` will be passed to + `post_list_with_metadata`. + """ + return response, metadata + + def pre_set_iam_policy( + self, + request: compute.SetIamPolicySnapshotGroupRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.SetIamPolicySnapshotGroupRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for set_iam_policy + + Override in a subclass to manipulate the request or metadata + before they are sent to the SnapshotGroups server. + """ + return request, metadata + + def post_set_iam_policy(self, response: compute.Policy) -> compute.Policy: + """Post-rpc interceptor for set_iam_policy + + DEPRECATED. Please use the `post_set_iam_policy_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the SnapshotGroups server but before + it is returned to user code. This `post_set_iam_policy` interceptor runs + before the `post_set_iam_policy_with_metadata` interceptor. + """ + return response + + def post_set_iam_policy_with_metadata( + self, + response: compute.Policy, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.Policy, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for set_iam_policy + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the SnapshotGroups server but before it is returned to user code. + + We recommend only using this `post_set_iam_policy_with_metadata` + interceptor in new development instead of the `post_set_iam_policy` interceptor. + When both interceptors are used, this `post_set_iam_policy_with_metadata` interceptor runs after the + `post_set_iam_policy` interceptor. The (possibly modified) response returned by + `post_set_iam_policy` will be passed to + `post_set_iam_policy_with_metadata`. + """ + return response, metadata + + def pre_test_iam_permissions( + self, + request: compute.TestIamPermissionsSnapshotGroupRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.TestIamPermissionsSnapshotGroupRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for test_iam_permissions + + Override in a subclass to manipulate the request or metadata + before they are sent to the SnapshotGroups server. + """ + return request, metadata + + def post_test_iam_permissions( + self, response: compute.TestPermissionsResponse + ) -> compute.TestPermissionsResponse: + """Post-rpc interceptor for test_iam_permissions + + DEPRECATED. Please use the `post_test_iam_permissions_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the SnapshotGroups server but before + it is returned to user code. This `post_test_iam_permissions` interceptor runs + before the `post_test_iam_permissions_with_metadata` interceptor. + """ + return response + + def post_test_iam_permissions_with_metadata( + self, + response: compute.TestPermissionsResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.TestPermissionsResponse, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for test_iam_permissions + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the SnapshotGroups server but before it is returned to user code. + + We recommend only using this `post_test_iam_permissions_with_metadata` + interceptor in new development instead of the `post_test_iam_permissions` interceptor. + When both interceptors are used, this `post_test_iam_permissions_with_metadata` interceptor runs after the + `post_test_iam_permissions` interceptor. The (possibly modified) response returned by + `post_test_iam_permissions` will be passed to + `post_test_iam_permissions_with_metadata`. + """ + return response, metadata + + +@dataclasses.dataclass +class SnapshotGroupsRestStub: + _session: AuthorizedSession + _host: str + _interceptor: SnapshotGroupsRestInterceptor + + +class SnapshotGroupsRestTransport(_BaseSnapshotGroupsRestTransport): + """REST backend synchronous transport for SnapshotGroups. + + The SnapshotGroups API. + + This class defines the same methods as the primary client, so the + primary client can load the underlying transport implementation + and call it. + + It sends JSON representations of protocol buffers over HTTP/1.1 + """ + + def __init__( + self, + *, + host: str = "compute.googleapis.com", + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + quota_project_id: Optional[str] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + url_scheme: str = "https", + interceptor: Optional[SnapshotGroupsRestInterceptor] = None, + api_audience: Optional[str] = None, + ) -> None: + """Instantiate the transport. + + NOTE: This REST transport functionality is currently in a beta + state (preview). We welcome your feedback via a GitHub issue in + this library's repository. Thank you! + + Args: + host (Optional[str]): + The hostname to connect to (default: 'compute.googleapis.com'). + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + + credentials_file (Optional[str]): Deprecated. A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is ignored if ``channel`` is provided. This argument will be + removed in the next major version of this library. + scopes (Optional(Sequence[str])): A list of scopes. This argument is + ignored if ``channel`` is provided. + client_cert_source_for_mtls (Callable[[], Tuple[bytes, bytes]]): Client + certificate to configure mutual TLS HTTP channel. It is ignored + if ``channel`` is provided. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you are developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + url_scheme: the protocol scheme for the API endpoint. Normally + "https", but for testing or local servers, + "http" can be specified. + """ + # Run the base constructor + # TODO(yon-mg): resolve other ctor params i.e. scopes, quota, etc. + # TODO: When custom host (api_endpoint) is set, `scopes` must *also* be set on the + # credentials object + super().__init__( + host=host, + credentials=credentials, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + url_scheme=url_scheme, + api_audience=api_audience, + ) + self._session = AuthorizedSession( + self._credentials, default_host=self.DEFAULT_HOST + ) + if client_cert_source_for_mtls: + self._session.configure_mtls_channel(client_cert_source_for_mtls) + self._interceptor = interceptor or SnapshotGroupsRestInterceptor() + self._prep_wrapped_messages(client_info) + + class _Delete(_BaseSnapshotGroupsRestTransport._BaseDelete, SnapshotGroupsRestStub): + def __hash__(self): + return hash("SnapshotGroupsRestTransport.Delete") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: compute.DeleteSnapshotGroupRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the delete method over HTTP. + + Args: + request (~.compute.DeleteSnapshotGroupRequest): + The request object. A request message for + SnapshotGroups.Delete. See the method + description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.Operation: + Represents an Operation resource. + + Google Compute Engine has three Operation resources: + + - `Global `__ + - `Regional `__ + - `Zonal `__ + + You can use an operation resource to manage asynchronous + API requests. For more information, readHandling 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 `zoneOperations` resource. + + For more information, read Global, Regional, and Zonal + Resources. + + Note that completed Operation resources have a limited + retention period. + + """ + + http_options = ( + _BaseSnapshotGroupsRestTransport._BaseDelete._get_http_options() + ) + + request, metadata = self._interceptor.pre_delete(request, metadata) + transcoded_request = ( + _BaseSnapshotGroupsRestTransport._BaseDelete._get_transcoded_request( + http_options, request + ) + ) + + # Jsonify the query params + query_params = ( + _BaseSnapshotGroupsRestTransport._BaseDelete._get_query_params_json( + transcoded_request + ) + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.SnapshotGroupsClient.Delete", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "Delete", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = SnapshotGroupsRestTransport._Delete._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.Operation() + pb_resp = compute.Operation.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_delete(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_delete_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.Operation.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.SnapshotGroupsClient.delete", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "Delete", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Get(_BaseSnapshotGroupsRestTransport._BaseGet, SnapshotGroupsRestStub): + def __hash__(self): + return hash("SnapshotGroupsRestTransport.Get") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: compute.GetSnapshotGroupRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.SnapshotGroup: + r"""Call the get method over HTTP. + + Args: + request (~.compute.GetSnapshotGroupRequest): + The request object. A request message for + SnapshotGroups.Get. See the method + description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.SnapshotGroup: + Represents a SnapshotGroup resource. + + A snapshot group is a set of snapshots + that represents a point in time state of + a consistency group. + + """ + + http_options = _BaseSnapshotGroupsRestTransport._BaseGet._get_http_options() + + request, metadata = self._interceptor.pre_get(request, metadata) + transcoded_request = ( + _BaseSnapshotGroupsRestTransport._BaseGet._get_transcoded_request( + http_options, request + ) + ) + + # Jsonify the query params + query_params = ( + _BaseSnapshotGroupsRestTransport._BaseGet._get_query_params_json( + transcoded_request + ) + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.SnapshotGroupsClient.Get", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "Get", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = SnapshotGroupsRestTransport._Get._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.SnapshotGroup() + pb_resp = compute.SnapshotGroup.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_with_metadata(resp, response_metadata) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.SnapshotGroup.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.SnapshotGroupsClient.get", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "Get", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetIamPolicy( + _BaseSnapshotGroupsRestTransport._BaseGetIamPolicy, SnapshotGroupsRestStub + ): + def __hash__(self): + return hash("SnapshotGroupsRestTransport.GetIamPolicy") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: compute.GetIamPolicySnapshotGroupRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Policy: + r"""Call the get iam policy method over HTTP. + + Args: + request (~.compute.GetIamPolicySnapshotGroupRequest): + The request object. A request message for + SnapshotGroups.GetIamPolicy. See the + method description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.Policy: + 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 `__. + + **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 `__. + + """ + + http_options = ( + _BaseSnapshotGroupsRestTransport._BaseGetIamPolicy._get_http_options() + ) + + request, metadata = self._interceptor.pre_get_iam_policy(request, metadata) + transcoded_request = _BaseSnapshotGroupsRestTransport._BaseGetIamPolicy._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseSnapshotGroupsRestTransport._BaseGetIamPolicy._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.SnapshotGroupsClient.GetIamPolicy", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "GetIamPolicy", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = SnapshotGroupsRestTransport._GetIamPolicy._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.Policy() + pb_resp = compute.Policy.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_iam_policy(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_iam_policy_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.Policy.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.SnapshotGroupsClient.get_iam_policy", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "GetIamPolicy", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Insert(_BaseSnapshotGroupsRestTransport._BaseInsert, SnapshotGroupsRestStub): + def __hash__(self): + return hash("SnapshotGroupsRestTransport.Insert") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: compute.InsertSnapshotGroupRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the insert method over HTTP. + + Args: + request (~.compute.InsertSnapshotGroupRequest): + The request object. A request message for + SnapshotGroups.Insert. See the method + description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.Operation: + Represents an Operation resource. + + Google Compute Engine has three Operation resources: + + - `Global `__ + - `Regional `__ + - `Zonal `__ + + You can use an operation resource to manage asynchronous + API requests. For more information, readHandling 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 `zoneOperations` resource. + + For more information, read Global, Regional, and Zonal + Resources. + + Note that completed Operation resources have a limited + retention period. + + """ + + http_options = ( + _BaseSnapshotGroupsRestTransport._BaseInsert._get_http_options() + ) + + request, metadata = self._interceptor.pre_insert(request, metadata) + transcoded_request = ( + _BaseSnapshotGroupsRestTransport._BaseInsert._get_transcoded_request( + http_options, request + ) + ) + + body = _BaseSnapshotGroupsRestTransport._BaseInsert._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = ( + _BaseSnapshotGroupsRestTransport._BaseInsert._get_query_params_json( + transcoded_request + ) + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.SnapshotGroupsClient.Insert", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "Insert", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = SnapshotGroupsRestTransport._Insert._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.Operation() + pb_resp = compute.Operation.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_insert(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_insert_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.Operation.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.SnapshotGroupsClient.insert", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "Insert", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _List(_BaseSnapshotGroupsRestTransport._BaseList, SnapshotGroupsRestStub): + def __hash__(self): + return hash("SnapshotGroupsRestTransport.List") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: compute.ListSnapshotGroupsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ListSnapshotGroups: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListSnapshotGroupsRequest): + The request object. A request message for + SnapshotGroups.List. See the method + description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.ListSnapshotGroups: + Contains a list of SnapshotGroup + resources. + + """ + + http_options = ( + _BaseSnapshotGroupsRestTransport._BaseList._get_http_options() + ) + + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request = ( + _BaseSnapshotGroupsRestTransport._BaseList._get_transcoded_request( + http_options, request + ) + ) + + # Jsonify the query params + query_params = ( + _BaseSnapshotGroupsRestTransport._BaseList._get_query_params_json( + transcoded_request + ) + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.SnapshotGroupsClient.List", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = SnapshotGroupsRestTransport._List._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.ListSnapshotGroups() + pb_resp = compute.ListSnapshotGroups.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_list(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_list_with_metadata(resp, response_metadata) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.ListSnapshotGroups.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.SnapshotGroupsClient.list", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "List", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _SetIamPolicy( + _BaseSnapshotGroupsRestTransport._BaseSetIamPolicy, SnapshotGroupsRestStub + ): + def __hash__(self): + return hash("SnapshotGroupsRestTransport.SetIamPolicy") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: compute.SetIamPolicySnapshotGroupRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Policy: + r"""Call the set iam policy method over HTTP. + + Args: + request (~.compute.SetIamPolicySnapshotGroupRequest): + The request object. A request message for + SnapshotGroups.SetIamPolicy. See the + method description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.Policy: + 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 `__. + + **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 `__. + + """ + + http_options = ( + _BaseSnapshotGroupsRestTransport._BaseSetIamPolicy._get_http_options() + ) + + request, metadata = self._interceptor.pre_set_iam_policy(request, metadata) + transcoded_request = _BaseSnapshotGroupsRestTransport._BaseSetIamPolicy._get_transcoded_request( + http_options, request + ) + + body = _BaseSnapshotGroupsRestTransport._BaseSetIamPolicy._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseSnapshotGroupsRestTransport._BaseSetIamPolicy._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.SnapshotGroupsClient.SetIamPolicy", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "SetIamPolicy", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = SnapshotGroupsRestTransport._SetIamPolicy._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.Policy() + pb_resp = compute.Policy.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_set_iam_policy(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_set_iam_policy_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.Policy.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.SnapshotGroupsClient.set_iam_policy", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "SetIamPolicy", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _TestIamPermissions( + _BaseSnapshotGroupsRestTransport._BaseTestIamPermissions, SnapshotGroupsRestStub + ): + def __hash__(self): + return hash("SnapshotGroupsRestTransport.TestIamPermissions") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: compute.TestIamPermissionsSnapshotGroupRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.TestPermissionsResponse: + r"""Call the test iam permissions method over HTTP. + + Args: + request (~.compute.TestIamPermissionsSnapshotGroupRequest): + The request object. A request message for + SnapshotGroups.TestIamPermissions. See + the method description for details. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.compute.TestPermissionsResponse: + + """ + + http_options = _BaseSnapshotGroupsRestTransport._BaseTestIamPermissions._get_http_options() + + request, metadata = self._interceptor.pre_test_iam_permissions( + request, metadata + ) + transcoded_request = _BaseSnapshotGroupsRestTransport._BaseTestIamPermissions._get_transcoded_request( + http_options, request + ) + + body = _BaseSnapshotGroupsRestTransport._BaseTestIamPermissions._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseSnapshotGroupsRestTransport._BaseTestIamPermissions._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.cloud.compute_v1beta.SnapshotGroupsClient.TestIamPermissions", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "TestIamPermissions", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = SnapshotGroupsRestTransport._TestIamPermissions._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.TestPermissionsResponse() + pb_resp = compute.TestPermissionsResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_test_iam_permissions(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_test_iam_permissions_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.TestPermissionsResponse.to_json(response) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.compute_v1beta.SnapshotGroupsClient.test_iam_permissions", + extra={ + "serviceName": "google.cloud.compute.v1beta.SnapshotGroups", + "rpcName": "TestIamPermissions", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def delete( + self, + ) -> Callable[[compute.DeleteSnapshotGroupRequest], compute.Operation]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._Delete(self._session, self._host, self._interceptor) # type: ignore + + @property + def get(self) -> Callable[[compute.GetSnapshotGroupRequest], compute.SnapshotGroup]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._Get(self._session, self._host, self._interceptor) # type: ignore + + @property + def get_iam_policy( + self, + ) -> Callable[[compute.GetIamPolicySnapshotGroupRequest], compute.Policy]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._GetIamPolicy(self._session, self._host, self._interceptor) # type: ignore + + @property + def insert( + self, + ) -> Callable[[compute.InsertSnapshotGroupRequest], compute.Operation]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._Insert(self._session, self._host, self._interceptor) # type: ignore + + @property + def list( + self, + ) -> Callable[[compute.ListSnapshotGroupsRequest], compute.ListSnapshotGroups]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._List(self._session, self._host, self._interceptor) # type: ignore + + @property + def set_iam_policy( + self, + ) -> Callable[[compute.SetIamPolicySnapshotGroupRequest], compute.Policy]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._SetIamPolicy(self._session, self._host, self._interceptor) # type: ignore + + @property + def test_iam_permissions( + self, + ) -> Callable[ + [compute.TestIamPermissionsSnapshotGroupRequest], + compute.TestPermissionsResponse, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._TestIamPermissions(self._session, self._host, self._interceptor) # type: ignore + + @property + def kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("SnapshotGroupsRestTransport",) diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/rest_base.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/rest_base.py new file mode 100644 index 000000000000..903647bc10b7 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/snapshot_groups/transports/rest_base.py @@ -0,0 +1,443 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +import json # type: ignore +import re +from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union + +from google.api_core import gapic_v1, path_template +from google.protobuf import json_format + +from google.cloud.compute_v1beta.types import compute + +from .base import DEFAULT_CLIENT_INFO, SnapshotGroupsTransport + + +class _BaseSnapshotGroupsRestTransport(SnapshotGroupsTransport): + """Base REST backend transport for SnapshotGroups. + + Note: This class is not meant to be used directly. Use its sync and + async sub-classes instead. + + This class defines the same methods as the primary client, so the + primary client can load the underlying transport implementation + and call it. + + It sends JSON representations of protocol buffers over HTTP/1.1 + """ + + def __init__( + self, + *, + host: str = "compute.googleapis.com", + credentials: Optional[Any] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + url_scheme: str = "https", + api_audience: Optional[str] = None, + ) -> None: + """Instantiate the transport. + Args: + host (Optional[str]): + The hostname to connect to (default: 'compute.googleapis.com'). + credentials (Optional[Any]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you are developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + url_scheme: the protocol scheme for the API endpoint. Normally + "https", but for testing or local servers, + "http" can be specified. + """ + # Run the base constructor + maybe_url_match = re.match("^(?Phttp(?:s)?://)?(?P.*)$", host) + if maybe_url_match is None: + raise ValueError( + f"Unexpected hostname structure: {host}" + ) # pragma: NO COVER + + url_match_items = maybe_url_match.groupdict() + + host = f"{url_scheme}://{host}" if not url_match_items["scheme"] else host + + super().__init__( + host=host, + credentials=credentials, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + api_audience=api_audience, + ) + + class _BaseDelete: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "delete", + "uri": "/compute/beta/projects/{project}/global/snapshotGroups/{snapshot_group}", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.DeleteSnapshotGroupRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseSnapshotGroupsRestTransport._BaseDelete._get_unset_required_fields( + query_params + ) + ) + + return query_params + + class _BaseGet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/beta/projects/{project}/global/snapshotGroups/{snapshot_group}", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.GetSnapshotGroupRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseSnapshotGroupsRestTransport._BaseGet._get_unset_required_fields( + query_params + ) + ) + + return query_params + + class _BaseGetIamPolicy: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/beta/projects/{project}/global/snapshotGroups/{resource}/getIamPolicy", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.GetIamPolicySnapshotGroupRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseSnapshotGroupsRestTransport._BaseGetIamPolicy._get_unset_required_fields( + query_params + ) + ) + + return query_params + + class _BaseInsert: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/beta/projects/{project}/global/snapshotGroups", + "body": "snapshot_group_resource", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.InsertSnapshotGroupRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=False + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseSnapshotGroupsRestTransport._BaseInsert._get_unset_required_fields( + query_params + ) + ) + + return query_params + + class _BaseList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/beta/projects/{project}/global/snapshotGroups", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.ListSnapshotGroupsRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseSnapshotGroupsRestTransport._BaseList._get_unset_required_fields( + query_params + ) + ) + + return query_params + + class _BaseSetIamPolicy: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/beta/projects/{project}/global/snapshotGroups/{resource}/setIamPolicy", + "body": "global_set_policy_request_resource", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.SetIamPolicySnapshotGroupRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=False + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseSnapshotGroupsRestTransport._BaseSetIamPolicy._get_unset_required_fields( + query_params + ) + ) + + return query_params + + class _BaseTestIamPermissions: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/beta/projects/{project}/global/snapshotGroups/{resource}/testIamPermissions", + "body": "test_permissions_request_resource", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = compute.TestIamPermissionsSnapshotGroupRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=False + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=False, + ) + ) + query_params.update( + _BaseSnapshotGroupsRestTransport._BaseTestIamPermissions._get_unset_required_fields( + query_params + ) + ) + + return query_params + + +__all__ = ("_BaseSnapshotGroupsRestTransport",) diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/types/__init__.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/types/__init__.py index 401124502ab0..cf4d5f879f62 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/types/__init__.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/types/__init__.py @@ -149,6 +149,7 @@ AutoscalingPolicyScalingSchedule, AWSV4Signature, Backend, + BackendBackendOrchestrationInfo, BackendBucket, BackendBucketAggregatedList, BackendBucketCdnPolicy, @@ -185,6 +186,7 @@ BackendServiceLogConfig, BackendServiceNetworkPassThroughLbTrafficPolicy, BackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity, + BackendServiceOrchestrationInfo, BackendServiceParams, BackendServiceReference, BackendServicesGetEffectiveSecurityPoliciesResponse, @@ -239,6 +241,7 @@ CompositeHealthCheckList, CompositeHealthChecksScopedList, ConfidentialInstanceConfig, + ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, ConnectionDraining, ConsistentHashLoadBalancerSettings, ConsistentHashLoadBalancerSettingsHttpCookie, @@ -295,6 +298,7 @@ DeleteInterconnectRequest, DeleteLicenseRequest, DeleteMachineImageRequest, + DeleteNamedSetRouterRequest, DeleteNetworkAttachmentRequest, DeleteNetworkEdgeSecurityServiceRequest, DeleteNetworkEndpointGroupRequest, @@ -350,6 +354,7 @@ DeleteServiceAttachmentRequest, DeleteSignedUrlKeyBackendBucketRequest, DeleteSignedUrlKeyBackendServiceRequest, + DeleteSnapshotGroupRequest, DeleteSnapshotRequest, DeleteSslCertificateRequest, DeleteSslPolicyRequest, @@ -530,6 +535,7 @@ GetIamPolicyReservationSubBlockRequest, GetIamPolicyResourcePolicyRequest, GetIamPolicyServiceAttachmentRequest, + GetIamPolicySnapshotGroupRequest, GetIamPolicySnapshotRequest, GetIamPolicyStoragePoolRequest, GetIamPolicySubnetworkRequest, @@ -554,6 +560,7 @@ GetMachineImageRequest, GetMachineTypeRequest, GetMacsecConfigInterconnectRequest, + GetNamedSetRouterRequest, GetNatIpInfoRouterRequest, GetNatMappingInfoRoutersRequest, GetNetworkAttachmentRequest, @@ -634,6 +641,7 @@ GetServiceAttachmentRequest, GetShieldedInstanceIdentityInstanceRequest, GetShieldedVmIdentityInstanceRequest, + GetSnapshotGroupRequest, GetSnapshotRequest, GetSnapshotSettingRequest, GetSslCertificateRequest, @@ -802,6 +810,7 @@ InsertRouterRequest, InsertSecurityPolicyRequest, InsertServiceAttachmentRequest, + InsertSnapshotGroupRequest, InsertSnapshotRequest, InsertSslCertificateRequest, InsertSslPolicyRequest, @@ -848,11 +857,13 @@ InstanceGroupManagerResourcePolicies, InstanceGroupManagersAbandonInstancesRequest, InstanceGroupManagersApplyUpdatesRequest, + InstanceGroupManagersConfigureAcceleratorTopologiesRequest, InstanceGroupManagersCreateInstancesRequest, InstanceGroupManagersDeleteInstancesRequest, InstanceGroupManagersDeletePerInstanceConfigsReq, InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse, InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyInfo, + InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyState, InstanceGroupManagersListErrorsResponse, InstanceGroupManagersListManagedInstancesResponse, InstanceGroupManagersListPerInstanceConfigsResp, @@ -1068,6 +1079,7 @@ ListMachineTypesRequest, ListManagedInstancesInstanceGroupManagersRequest, ListManagedInstancesRegionInstanceGroupManagersRequest, + ListNamedSetsRoutersRequest, ListNetworkAttachmentsRequest, ListNetworkEndpointGroupsRequest, ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest, @@ -1137,6 +1149,8 @@ ListRoutesRequest, ListSecurityPoliciesRequest, ListServiceAttachmentsRequest, + ListSnapshotGroups, + ListSnapshotGroupsRequest, ListSnapshotsRequest, ListSslCertificatesRequest, ListSslPoliciesRequest, @@ -1169,6 +1183,7 @@ LocationPolicy, LocationPolicyLocation, LocationPolicyLocationConstraints, + LocationPolicyZoneConfiguration, MachineImage, MachineImageList, MachineImageParams, @@ -1203,6 +1218,7 @@ MultiMigStatusAcceleratorTopology, MultiMigStatusAcceleratorTopologyAcceleratorTopologyStateLastCheck, NamedPort, + NamedSet, NatIpInfo, NatIpInfoNatIpInfoMapping, NatIpInfoResponse, @@ -1328,6 +1344,7 @@ PatchInterconnectAttachmentRequest, PatchInterconnectGroupRequest, PatchInterconnectRequest, + PatchNamedSetRouterRequest, PatchNetworkAttachmentRequest, PatchNetworkEdgeSecurityServiceRequest, PatchNetworkFirewallPolicyRequest, @@ -1504,6 +1521,7 @@ ReservationBlocksGetResponse, ReservationBlocksListResponse, ReservationList, + ReservationParams, ReservationsBlocksPerformMaintenanceRequest, ReservationSlot, ReservationSlotPhysicalTopology, @@ -1598,8 +1616,10 @@ RouterNatSubnetworkToNat, RouterNatSubnetworkToNat64, RouterParams, + RoutersGetNamedSetResponse, RoutersGetRoutePolicyResponse, RoutersListBgpRoutes, + RoutersListNamedSets, RoutersListRoutePolicies, RoutersPreviewResponse, RoutersScopedList, @@ -1709,6 +1729,7 @@ SetIamPolicyReservationSubBlockRequest, SetIamPolicyResourcePolicyRequest, SetIamPolicyServiceAttachmentRequest, + SetIamPolicySnapshotGroupRequest, SetIamPolicySnapshotRequest, SetIamPolicyStoragePoolRequest, SetIamPolicySubnetworkRequest, @@ -1787,6 +1808,10 @@ SimulateMaintenanceEventNodeGroupRequest, Snapshot, SnapshotAggregatedList, + SnapshotGroup, + SnapshotGroupParameters, + SnapshotGroupSourceInfo, + SnapshotGroupSourceInstantSnapshotGroupInfo, SnapshotList, SnapshotParams, SnapshotSettings, @@ -1972,6 +1997,7 @@ TestIamPermissionsRouterRequest, TestIamPermissionsSecurityPolicyRequest, TestIamPermissionsServiceAttachmentRequest, + TestIamPermissionsSnapshotGroupRequest, TestIamPermissionsSnapshotRequest, TestIamPermissionsSslCertificateRequest, TestIamPermissionsSslPolicyRequest, @@ -2005,6 +2031,7 @@ UpdateInstanceGroupManagerRequest, UpdateInstanceRequest, UpdateLicenseRequest, + UpdateNamedSetRouterRequest, UpdateNetworkInterfaceInstanceRequest, UpdatePeeringNetworkRequest, UpdatePerInstanceConfigsInstanceGroupManagerRequest, @@ -2240,6 +2267,7 @@ "AutoscalingPolicyScalingSchedule", "AWSV4Signature", "Backend", + "BackendBackendOrchestrationInfo", "BackendBucket", "BackendBucketAggregatedList", "BackendBucketCdnPolicy", @@ -2276,6 +2304,7 @@ "BackendServiceLogConfig", "BackendServiceNetworkPassThroughLbTrafficPolicy", "BackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity", + "BackendServiceOrchestrationInfo", "BackendServiceParams", "BackendServiceReference", "BackendServicesGetEffectiveSecurityPoliciesResponse", @@ -2330,6 +2359,7 @@ "CompositeHealthCheckList", "CompositeHealthChecksScopedList", "ConfidentialInstanceConfig", + "ConfigureAcceleratorTopologiesInstanceGroupManagerRequest", "ConnectionDraining", "ConsistentHashLoadBalancerSettings", "ConsistentHashLoadBalancerSettingsHttpCookie", @@ -2386,6 +2416,7 @@ "DeleteInterconnectRequest", "DeleteLicenseRequest", "DeleteMachineImageRequest", + "DeleteNamedSetRouterRequest", "DeleteNetworkAttachmentRequest", "DeleteNetworkEdgeSecurityServiceRequest", "DeleteNetworkEndpointGroupRequest", @@ -2441,6 +2472,7 @@ "DeleteServiceAttachmentRequest", "DeleteSignedUrlKeyBackendBucketRequest", "DeleteSignedUrlKeyBackendServiceRequest", + "DeleteSnapshotGroupRequest", "DeleteSnapshotRequest", "DeleteSslCertificateRequest", "DeleteSslPolicyRequest", @@ -2621,6 +2653,7 @@ "GetIamPolicyReservationSubBlockRequest", "GetIamPolicyResourcePolicyRequest", "GetIamPolicyServiceAttachmentRequest", + "GetIamPolicySnapshotGroupRequest", "GetIamPolicySnapshotRequest", "GetIamPolicyStoragePoolRequest", "GetIamPolicySubnetworkRequest", @@ -2645,6 +2678,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", "GetNetworkAttachmentRequest", @@ -2725,6 +2759,7 @@ "GetServiceAttachmentRequest", "GetShieldedInstanceIdentityInstanceRequest", "GetShieldedVmIdentityInstanceRequest", + "GetSnapshotGroupRequest", "GetSnapshotRequest", "GetSnapshotSettingRequest", "GetSslCertificateRequest", @@ -2893,6 +2928,7 @@ "InsertRouterRequest", "InsertSecurityPolicyRequest", "InsertServiceAttachmentRequest", + "InsertSnapshotGroupRequest", "InsertSnapshotRequest", "InsertSslCertificateRequest", "InsertSslPolicyRequest", @@ -2939,11 +2975,13 @@ "InstanceGroupManagerResourcePolicies", "InstanceGroupManagersAbandonInstancesRequest", "InstanceGroupManagersApplyUpdatesRequest", + "InstanceGroupManagersConfigureAcceleratorTopologiesRequest", "InstanceGroupManagersCreateInstancesRequest", "InstanceGroupManagersDeleteInstancesRequest", "InstanceGroupManagersDeletePerInstanceConfigsReq", "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse", "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyInfo", + "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyState", "InstanceGroupManagersListErrorsResponse", "InstanceGroupManagersListManagedInstancesResponse", "InstanceGroupManagersListPerInstanceConfigsResp", @@ -3159,6 +3197,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", "ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest", @@ -3228,6 +3267,8 @@ "ListRoutesRequest", "ListSecurityPoliciesRequest", "ListServiceAttachmentsRequest", + "ListSnapshotGroups", + "ListSnapshotGroupsRequest", "ListSnapshotsRequest", "ListSslCertificatesRequest", "ListSslPoliciesRequest", @@ -3260,6 +3301,7 @@ "LocationPolicy", "LocationPolicyLocation", "LocationPolicyLocationConstraints", + "LocationPolicyZoneConfiguration", "MachineImage", "MachineImageList", "MachineImageParams", @@ -3294,6 +3336,7 @@ "MultiMigStatusAcceleratorTopology", "MultiMigStatusAcceleratorTopologyAcceleratorTopologyStateLastCheck", "NamedPort", + "NamedSet", "NatIpInfo", "NatIpInfoNatIpInfoMapping", "NatIpInfoResponse", @@ -3419,6 +3462,7 @@ "PatchInterconnectAttachmentRequest", "PatchInterconnectGroupRequest", "PatchInterconnectRequest", + "PatchNamedSetRouterRequest", "PatchNetworkAttachmentRequest", "PatchNetworkEdgeSecurityServiceRequest", "PatchNetworkFirewallPolicyRequest", @@ -3595,6 +3639,7 @@ "ReservationBlocksGetResponse", "ReservationBlocksListResponse", "ReservationList", + "ReservationParams", "ReservationsBlocksPerformMaintenanceRequest", "ReservationSlot", "ReservationSlotPhysicalTopology", @@ -3689,8 +3734,10 @@ "RouterNatSubnetworkToNat", "RouterNatSubnetworkToNat64", "RouterParams", + "RoutersGetNamedSetResponse", "RoutersGetRoutePolicyResponse", "RoutersListBgpRoutes", + "RoutersListNamedSets", "RoutersListRoutePolicies", "RoutersPreviewResponse", "RoutersScopedList", @@ -3800,6 +3847,7 @@ "SetIamPolicyReservationSubBlockRequest", "SetIamPolicyResourcePolicyRequest", "SetIamPolicyServiceAttachmentRequest", + "SetIamPolicySnapshotGroupRequest", "SetIamPolicySnapshotRequest", "SetIamPolicyStoragePoolRequest", "SetIamPolicySubnetworkRequest", @@ -3878,6 +3926,10 @@ "SimulateMaintenanceEventNodeGroupRequest", "Snapshot", "SnapshotAggregatedList", + "SnapshotGroup", + "SnapshotGroupParameters", + "SnapshotGroupSourceInfo", + "SnapshotGroupSourceInstantSnapshotGroupInfo", "SnapshotList", "SnapshotParams", "SnapshotSettings", @@ -4063,6 +4115,7 @@ "TestIamPermissionsRouterRequest", "TestIamPermissionsSecurityPolicyRequest", "TestIamPermissionsServiceAttachmentRequest", + "TestIamPermissionsSnapshotGroupRequest", "TestIamPermissionsSnapshotRequest", "TestIamPermissionsSslCertificateRequest", "TestIamPermissionsSslPolicyRequest", @@ -4096,6 +4149,7 @@ "UpdateInstanceGroupManagerRequest", "UpdateInstanceRequest", "UpdateLicenseRequest", + "UpdateNamedSetRouterRequest", "UpdateNetworkInterfaceInstanceRequest", "UpdatePeeringNetworkRequest", "UpdatePerInstanceConfigsInstanceGroupManagerRequest", diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/types/compute.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/types/compute.py index 33b80924967e..c3afbe3d25fc 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/types/compute.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/types/compute.py @@ -159,6 +159,7 @@ "AutoscalingPolicyScaleInControl", "AutoscalingPolicyScalingSchedule", "Backend", + "BackendBackendOrchestrationInfo", "BackendBucket", "BackendBucketAggregatedList", "BackendBucketCdnPolicy", @@ -195,6 +196,7 @@ "BackendServiceLogConfig", "BackendServiceNetworkPassThroughLbTrafficPolicy", "BackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity", + "BackendServiceOrchestrationInfo", "BackendServiceParams", "BackendServiceReference", "BackendServiceTlsSettings", @@ -249,6 +251,7 @@ "CompositeHealthCheckList", "CompositeHealthChecksScopedList", "ConfidentialInstanceConfig", + "ConfigureAcceleratorTopologiesInstanceGroupManagerRequest", "ConnectionDraining", "ConsistentHashLoadBalancerSettings", "ConsistentHashLoadBalancerSettingsHttpCookie", @@ -305,6 +308,7 @@ "DeleteInterconnectRequest", "DeleteLicenseRequest", "DeleteMachineImageRequest", + "DeleteNamedSetRouterRequest", "DeleteNetworkAttachmentRequest", "DeleteNetworkEdgeSecurityServiceRequest", "DeleteNetworkEndpointGroupRequest", @@ -360,6 +364,7 @@ "DeleteServiceAttachmentRequest", "DeleteSignedUrlKeyBackendBucketRequest", "DeleteSignedUrlKeyBackendServiceRequest", + "DeleteSnapshotGroupRequest", "DeleteSnapshotRequest", "DeleteSslCertificateRequest", "DeleteSslPolicyRequest", @@ -542,6 +547,7 @@ "GetIamPolicyReservationSubBlockRequest", "GetIamPolicyResourcePolicyRequest", "GetIamPolicyServiceAttachmentRequest", + "GetIamPolicySnapshotGroupRequest", "GetIamPolicySnapshotRequest", "GetIamPolicyStoragePoolRequest", "GetIamPolicySubnetworkRequest", @@ -566,6 +572,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", "GetNetworkAttachmentRequest", @@ -646,6 +653,7 @@ "GetServiceAttachmentRequest", "GetShieldedInstanceIdentityInstanceRequest", "GetShieldedVmIdentityInstanceRequest", + "GetSnapshotGroupRequest", "GetSnapshotRequest", "GetSnapshotSettingRequest", "GetSslCertificateRequest", @@ -812,6 +820,7 @@ "InsertRouterRequest", "InsertSecurityPolicyRequest", "InsertServiceAttachmentRequest", + "InsertSnapshotGroupRequest", "InsertSnapshotRequest", "InsertSslCertificateRequest", "InsertSslPolicyRequest", @@ -870,11 +879,13 @@ "InstanceGroupManagerVersion", "InstanceGroupManagersAbandonInstancesRequest", "InstanceGroupManagersApplyUpdatesRequest", + "InstanceGroupManagersConfigureAcceleratorTopologiesRequest", "InstanceGroupManagersCreateInstancesRequest", "InstanceGroupManagersDeleteInstancesRequest", "InstanceGroupManagersDeletePerInstanceConfigsReq", "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse", "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyInfo", + "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyState", "InstanceGroupManagersListErrorsResponse", "InstanceGroupManagersListManagedInstancesResponse", "InstanceGroupManagersListPerInstanceConfigsResp", @@ -1078,6 +1089,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", "ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest", @@ -1147,6 +1159,8 @@ "ListRoutesRequest", "ListSecurityPoliciesRequest", "ListServiceAttachmentsRequest", + "ListSnapshotGroups", + "ListSnapshotGroupsRequest", "ListSnapshotsRequest", "ListSslCertificatesRequest", "ListSslPoliciesRequest", @@ -1179,6 +1193,7 @@ "LocationPolicy", "LocationPolicyLocation", "LocationPolicyLocationConstraints", + "LocationPolicyZoneConfiguration", "MachineImage", "MachineImageList", "MachineImageParams", @@ -1213,6 +1228,7 @@ "MultiMigStatusAcceleratorTopologyAcceleratorTopologyStateLastCheck", "MultiMigsList", "NamedPort", + "NamedSet", "NatIpInfo", "NatIpInfoNatIpInfoMapping", "NatIpInfoResponse", @@ -1338,6 +1354,7 @@ "PatchInterconnectAttachmentRequest", "PatchInterconnectGroupRequest", "PatchInterconnectRequest", + "PatchNamedSetRouterRequest", "PatchNetworkAttachmentRequest", "PatchNetworkEdgeSecurityServiceRequest", "PatchNetworkFirewallPolicyRequest", @@ -1514,6 +1531,7 @@ "ReservationBlocksGetResponse", "ReservationBlocksListResponse", "ReservationList", + "ReservationParams", "ReservationSlot", "ReservationSlotPhysicalTopology", "ReservationSlotStatus", @@ -1613,8 +1631,10 @@ "RouterStatusNatStatus", "RouterStatusNatStatusNatRuleStatus", "RouterStatusResponse", + "RoutersGetNamedSetResponse", "RoutersGetRoutePolicyResponse", "RoutersListBgpRoutes", + "RoutersListNamedSets", "RoutersListRoutePolicies", "RoutersPreviewResponse", "RoutersScopedList", @@ -1720,6 +1740,7 @@ "SetIamPolicyReservationSubBlockRequest", "SetIamPolicyResourcePolicyRequest", "SetIamPolicyServiceAttachmentRequest", + "SetIamPolicySnapshotGroupRequest", "SetIamPolicySnapshotRequest", "SetIamPolicyStoragePoolRequest", "SetIamPolicySubnetworkRequest", @@ -1798,6 +1819,10 @@ "SimulateMaintenanceEventNodeGroupRequest", "Snapshot", "SnapshotAggregatedList", + "SnapshotGroup", + "SnapshotGroupParameters", + "SnapshotGroupSourceInfo", + "SnapshotGroupSourceInstantSnapshotGroupInfo", "SnapshotList", "SnapshotParams", "SnapshotSettings", @@ -1982,6 +2007,7 @@ "TestIamPermissionsRouterRequest", "TestIamPermissionsSecurityPolicyRequest", "TestIamPermissionsServiceAttachmentRequest", + "TestIamPermissionsSnapshotGroupRequest", "TestIamPermissionsSnapshotRequest", "TestIamPermissionsSslCertificateRequest", "TestIamPermissionsSslPolicyRequest", @@ -2015,6 +2041,7 @@ "UpdateInstanceGroupManagerRequest", "UpdateInstanceRequest", "UpdateLicenseRequest", + "UpdateNamedSetRouterRequest", "UpdateNetworkInterfaceInstanceRequest", "UpdatePeeringNetworkRequest", "UpdatePerInstanceConfigsInstanceGroupManagerRequest", @@ -16828,10 +16855,7 @@ class AttachedDisk(proto.Message): This field is a member of `oneof`_ ``_type``. user_licenses (MutableSequence[str]): - Output only. [Output Only] A list of user provided licenses. - It represents a list of URLs to the license resource. Unlike - regular licenses, user provided licenses can be modified - after the disk is created. + """ class Architecture(proto.Enum): @@ -17169,11 +17193,11 @@ class AttachedDiskInitializeParams(proto.Message): provide exactly two replica zones, and one zone must be the same as the instance zone. 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 and values can be either in numeric format, such as - ``tagKeys/{tag_key_id}`` and ``tagValues/456`` or in - namespaced format such as + Input only. Resource manager tags to be bound to the disk. + Tag keys and values have the same definition as resource + manager tags. Keys and values can be either in numeric + format, such as ``tagKeys/{tag_key_id}`` and + ``tagValues/456`` or in namespaced format such as ``{org_id|project_id}/{tag_key_short_name}`` and ``{tag_value_short_name}``. The field is ignored (both PUT & PATCH) when empty. @@ -19069,6 +19093,11 @@ class Backend(proto.Message): For usage guidelines, seeUtilization balancing mode. This field is a member of `oneof`_ ``_max_utilization``. + orchestration_info (google.cloud.compute_v1beta.types.BackendBackendOrchestrationInfo): + Information about the resource or system that + manages the backend. + + This field is a member of `oneof`_ ``_orchestration_info``. preference (str): This field indicates whether this backend should be fully utilized before sending traffic @@ -19267,6 +19296,12 @@ class TrafficDuration(proto.Enum): number=148192199, optional=True, ) + orchestration_info: "BackendBackendOrchestrationInfo" = proto.Field( + proto.MESSAGE, + number=441144300, + optional=True, + message="BackendBackendOrchestrationInfo", + ) preference: str = proto.Field( proto.STRING, number=150781147, @@ -19279,6 +19314,28 @@ class TrafficDuration(proto.Enum): ) +class BackendBackendOrchestrationInfo(proto.Message): + r"""A message containing information about the resource or system + that manages the backend. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + resource_uri (str): + The URI of the resource or system that + manages the backend. + + This field is a member of `oneof`_ ``_resource_uri``. + """ + + resource_uri: str = proto.Field( + proto.STRING, + number=152830395, + optional=True, + ) + + class BackendBucket(proto.Message): r"""Represents a Cloud Storage Bucket resource. @@ -20672,6 +20729,11 @@ class BackendService(proto.Message): specified with haPolicy. This field is a member of `oneof`_ ``_network_pass_through_lb_traffic_policy``. + orchestration_info (google.cloud.compute_v1beta.types.BackendServiceOrchestrationInfo): + Information about the resource or system that + manages the backend service. + + This field is a member of `oneof`_ ``_orchestration_info``. outlier_detection (google.cloud.compute_v1beta.types.OutlierDetection): Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual @@ -21468,6 +21530,12 @@ class SessionAffinity(proto.Enum): optional=True, message="BackendServiceNetworkPassThroughLbTrafficPolicy", ) + orchestration_info: "BackendServiceOrchestrationInfo" = proto.Field( + proto.MESSAGE, + number=441144300, + optional=True, + message="BackendServiceOrchestrationInfo", + ) outlier_detection: "OutlierDetection" = proto.Field( proto.MESSAGE, number=354625086, @@ -23281,6 +23349,28 @@ class Spillover(proto.Enum): ) +class BackendServiceOrchestrationInfo(proto.Message): + r"""A message containing information about the resource or system + that manages the backend service. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + resource_uri (str): + The resource URI of the resource or system + that manages the backend service. + + This field is a member of `oneof`_ ``_resource_uri``. + """ + + resource_uri: str = proto.Field( + proto.STRING, + number=152830395, + optional=True, + ) + + class BackendServiceParams(proto.Message): r"""Additional Backend Service parameters. @@ -24446,6 +24536,10 @@ class BulkInsertDiskResource(proto.Message): group. This field is a member of `oneof`_ ``_instant_snapshot_group_parameters``. + snapshot_group_parameters (google.cloud.compute_v1beta.types.SnapshotGroupParameters): + The parameters for the snapshot group. + + This field is a member of `oneof`_ ``_snapshot_group_parameters``. source_consistency_group_policy (str): The URL of the DiskConsistencyGroupPolicy for the group of disks to clone. This may be a full @@ -24470,6 +24564,12 @@ class BulkInsertDiskResource(proto.Message): optional=True, message="InstantSnapshotGroupParameters", ) + snapshot_group_parameters: "SnapshotGroupParameters" = proto.Field( + proto.MESSAGE, + number=42252485, + optional=True, + message="SnapshotGroupParameters", + ) source_consistency_group_policy: str = proto.Field( proto.STRING, number=19616093, @@ -27391,6 +27491,72 @@ class ConfidentialInstanceType(proto.Enum): ) +class ConfigureAcceleratorTopologiesInstanceGroupManagerRequest(proto.Message): + r"""A request message for + InstanceGroupManagers.ConfigureAcceleratorTopologies. 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_configure_accelerator_topologies_request_resource (google.cloud.compute_v1beta.types.InstanceGroupManagersConfigureAcceleratorTopologiesRequest): + 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 thezone + 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_configure_accelerator_topologies_request_resource: "InstanceGroupManagersConfigureAcceleratorTopologiesRequest" = proto.Field( + proto.MESSAGE, + number=365743316, + message="InstanceGroupManagersConfigureAcceleratorTopologiesRequest", + ) + 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 ConnectionDraining(proto.Message): r"""Message containing connection draining configuration. @@ -30444,76 +30610,23 @@ class DeleteMachineImageRequest(proto.Message): ) -class DeleteNetworkAttachmentRequest(proto.Message): - r"""A request message for NetworkAttachments.Delete. See the - method description for details. +class DeleteNamedSetRouterRequest(proto.Message): + r"""A request message for Routers.DeleteNamedSet. 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. + named_set (str): + The Named Set name for this request. Name + must conform to RFC1035 - For example, consider a situation where you make an initial - request and the request times out. If you make the request - again with the same request ID, the server can check if - original operation with the same request ID was received, - and if so, will ignore the second request. This prevents - clients from accidentally creating 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. + This field is a member of `oneof`_ ``_named_set``. project (str): Project ID for this request. region (str): - Name of the region scoping this request. + 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 @@ -30536,11 +30649,15 @@ class DeleteNetworkEdgeSecurityServiceRequest(proto.Message): (00000000-0000-0000-0000-000000000000). This field is a member of `oneof`_ ``_request_id``. + router (str): + Name of the Router resource where Named Set + is defined. """ - network_edge_security_service: str = proto.Field( + named_set: str = proto.Field( proto.STRING, - number=157011879, + number=164134492, + optional=True, ) project: str = proto.Field( proto.STRING, @@ -30555,80 +30672,82 @@ class DeleteNetworkEdgeSecurityServiceRequest(proto.Message): number=37109963, optional=True, ) + router: str = proto.Field( + proto.STRING, + number=148608841, + ) -class DeleteNetworkEndpointGroupRequest(proto.Message): - r"""A request message for NetworkEndpointGroups.Delete. See the +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_endpoint_group (str): - The name of the network endpoint group to - delete. It should comply with RFC1035. + 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. + An optional request ID to identify requests. Specify a + unique request ID so that if you must retry your request, + the server will know to ignore the request if it has already + been completed. - For example, consider a situation where you make - an initial request and the request times out. If - you make the request again with the same request - ID, the server can check if original operation - with the same request ID was received, and if - so, will ignore the second request. This - prevents clients from accidentally creating - duplicate commitments. + For example, consider a situation where you make an initial + request and the request times out. If you make the request + again with the same request ID, the server can check if + original operation with the same request ID was received, + and if so, will ignore the second request. This prevents + clients from accidentally creating duplicate commitments. - The request ID must be - a valid UUID with the exception that zero UUID - is not supported - (00000000-0000-0000-0000-000000000000). + 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``. - 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( + network_attachment: str = proto.Field( proto.STRING, - number=433907078, + 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, ) - 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. +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: - firewall_policy (str): - Name of the firewall policy to delete. + 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 @@ -30653,14 +30772,18 @@ class DeleteNetworkFirewallPolicyRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. """ - firewall_policy: str = proto.Field( + network_edge_security_service: str = proto.Field( proto.STRING, - number=498173265, + 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, @@ -30668,21 +30791,132 @@ class DeleteNetworkFirewallPolicyRequest(proto.Message): ) -class DeleteNetworkInterfaceInstanceRequest(proto.Message): - r"""A request message for Instances.DeleteNetworkInterface. See - the method description for details. +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: - instance (str): - The instance name for this request stored as resource_id. - Name should conform to RFC1035 or be an unsigned long - integer. - network_interface_name (str): - The name of the dynamic network interface to - be deleted from the instance. + 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 DeleteNetworkInterfaceInstanceRequest(proto.Message): + r"""A request message for Instances.DeleteNetworkInterface. 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 stored as resource_id. + Name should conform to RFC1035 or be an unsigned long + integer. + network_interface_name (str): + The name of the dynamic network interface to + be deleted from the instance. project (str): Project ID for this request. request_id (str): @@ -33472,6 +33706,57 @@ class DeleteSignedUrlKeyBackendServiceRequest(proto.Message): ) +class DeleteSnapshotGroupRequest(proto.Message): + r"""A request message for SnapshotGroups.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_group (str): + Name of the SnapshotGroup resource to delete. + """ + + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + snapshot_group: str = proto.Field( + proto.STRING, + number=84528196, + ) + + class DeleteSnapshotRequest(proto.Message): r"""A request message for Snapshots.Delete. See the method description for details. @@ -35571,13 +35856,7 @@ class Disk(proto.Message): This field is a member of `oneof`_ ``_type``. user_licenses (MutableSequence[str]): - A list of publicly visible user-licenses. - Unlike regular licenses, user provided licenses - can be modified after the disk is created. This - includes a list of URLs to the license resource. - For example, to provide a debian license: - https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch users (MutableSequence[str]): Output only. [Output Only] Links to the users of the disk (attached instances) in @@ -36449,11 +36728,11 @@ class DiskParams(proto.Message): 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 and values can be either in numeric format, such as - ``tagKeys/{tag_key_id}`` and ``tagValues/456`` or in - namespaced format such as + Input only. Resource manager tags to be bound to the disk. + Tag keys and values have the same definition as resource + manager tags. Keys and values can be either in numeric + format, such as ``tagKeys/{tag_key_id}`` and + ``tagValues/456`` or in namespaced format such as ``{org_id|project_id}/{tag_key_short_name}`` and ``{tag_value_short_name}``. The field is ignored (both PUT & PATCH) when empty. @@ -37380,8 +37659,7 @@ class EnableXpnResourceProjectRequest(proto.Message): class Error(proto.Message): - r"""Output only. Errors that prevented the ResizeRequest to be - fulfilled. + r"""Reason why the topology state change failed Attributes: errors (MutableSequence[google.cloud.compute_v1beta.types.Errors]): @@ -45408,6 +45686,39 @@ class GetIamPolicyServiceAttachmentRequest(proto.Message): ) +class GetIamPolicySnapshotGroupRequest(proto.Message): + r"""A request message for SnapshotGroups.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 GetIamPolicySnapshotRequest(proto.Message): r"""A request message for Snapshots.GetIamPolicy. See the method description for details. @@ -46106,6 +46417,47 @@ class GetMacsecConfigInterconnectRequest(proto.Message): ) +class GetNamedSetRouterRequest(proto.Message): + r"""A request message for Routers.GetNamedSet. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + named_set (str): + The Named Set name for this request. Name + must conform to RFC1035 + + This field is a member of `oneof`_ ``_named_set``. + 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 for the + named set. The name should conform to RFC1035. + """ + + named_set: str = proto.Field( + proto.STRING, + number=164134492, + optional=True, + ) + 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 GetNatIpInfoRouterRequest(proto.Message): r"""A request message for Routers.GetNatIpInfo. See the method description for details. @@ -48670,6 +49022,27 @@ class GetShieldedVmIdentityInstanceRequest(proto.Message): ) +class GetSnapshotGroupRequest(proto.Message): + r"""A request message for SnapshotGroups.Get. See the method + description for details. + + Attributes: + project (str): + Project ID for this request. + snapshot_group (str): + Name of the SnapshotGroup resource to return. + """ + + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + snapshot_group: str = proto.Field( + proto.STRING, + number=84528196, + ) + + class GetSnapshotRequest(proto.Message): r"""A request message for Snapshots.Get. See the method description for details. @@ -54896,13 +55269,7 @@ class Image(proto.Message): Cloud Storage bucket storage location of the image (regional or multi-regional). user_licenses (MutableSequence[str]): - A list of publicly visible user-licenses. - Unlike regular licenses, user provided licenses - can be modified after the disk is created. This - includes a list of URLs to the license resource. - For example, to provide a debian license: - https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch """ class Architecture(proto.Enum): @@ -55265,11 +55632,11 @@ class ImageParams(proto.Message): Attributes: resource_manager_tags (MutableMapping[str, str]): - Resource manager tags to be bound to the image. Tag keys and - values have the same definition as resource manager tags. - Keys and values can be either in numeric format, such as - ``tagKeys/{tag_key_id}`` and ``tagValues/456`` or in - namespaced format such as + Input only. Resource manager tags to be bound to the image. + Tag keys and values have the same definition as resource + manager tags. Keys and values can be either in numeric + format, such as ``tagKeys/{tag_key_id}`` and + ``tagValues/456`` or in namespaced format such as ``{org_id|project_id}/{tag_key_short_name}`` and ``{tag_value_short_name}``. The field is ignored (both PUT & PATCH) when empty. @@ -59797,8 +60164,8 @@ class InsertServiceAttachmentRequest(proto.Message): ) -class InsertSnapshotRequest(proto.Message): - r"""A request message for Snapshots.Insert. See the method +class InsertSnapshotGroupRequest(proto.Message): + r"""A request message for SnapshotGroups.Insert. See the method description for details. @@ -59829,7 +60196,7 @@ class InsertSnapshotRequest(proto.Message): (00000000-0000-0000-0000-000000000000). This field is a member of `oneof`_ ``_request_id``. - snapshot_resource (google.cloud.compute_v1beta.types.Snapshot): + snapshot_group_resource (google.cloud.compute_v1beta.types.SnapshotGroup): The body resource for this request """ @@ -59842,15 +60209,15 @@ class InsertSnapshotRequest(proto.Message): number=37109963, optional=True, ) - snapshot_resource: "Snapshot" = proto.Field( + snapshot_group_resource: "SnapshotGroup" = proto.Field( proto.MESSAGE, - number=481319977, - message="Snapshot", + number=265205161, + message="SnapshotGroup", ) -class InsertSslCertificateRequest(proto.Message): - r"""A request message for SslCertificates.Insert. See the method +class InsertSnapshotRequest(proto.Message): + r"""A request message for Snapshots.Insert. See the method description for details. @@ -59881,7 +60248,7 @@ class InsertSslCertificateRequest(proto.Message): (00000000-0000-0000-0000-000000000000). This field is a member of `oneof`_ ``_request_id``. - ssl_certificate_resource (google.cloud.compute_v1beta.types.SslCertificate): + snapshot_resource (google.cloud.compute_v1beta.types.Snapshot): The body resource for this request """ @@ -59894,15 +60261,67 @@ class InsertSslCertificateRequest(proto.Message): number=37109963, optional=True, ) - ssl_certificate_resource: "SslCertificate" = proto.Field( + snapshot_resource: "Snapshot" = proto.Field( proto.MESSAGE, - number=180709897, - message="SslCertificate", + number=481319977, + message="Snapshot", ) -class InsertSslPolicyRequest(proto.Message): - r"""A request message for SslPolicies.Insert. See the method +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_v1beta.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. @@ -63396,10 +63815,11 @@ class InstanceGroupManagerParams(proto.Message): Attributes: resource_manager_tags (MutableMapping[str, str]): - Resource manager tags to bind to the managed instance group. - The tags are key-value pairs. Keys and values can be either - in numeric format, such as ``tagKeys/{tag_key_id}`` and - ``tagValues/456`` or in namespaced format such as + Input only. Resource manager tags to bind to the managed + instance group. The tags are key-value pairs. Keys and + values can be either in numeric format, such as + ``tagKeys/{tag_key_id}`` and ``tagValues/456`` or in + namespaced format such as ``{org_id|project_id}/{tag_key_short_name}`` and ``{tag_value_short_name}``. For more information, seeManage tags for resources. @@ -64884,6 +65304,25 @@ class MostDisruptiveAllowedAction(proto.Enum): ) +class InstanceGroupManagersConfigureAcceleratorTopologiesRequest(proto.Message): + r"""InstanceGroupManagers.ConfigureAcceleratorTopologies + + Attributes: + accelerator_topology_actions (MutableMapping[str, str]): + Map of accelerator topologies that should + have their state changed to the specified value. + The key is the hashed topology locus id. It can + be obtained from the + GetAvailableAcceleratorTopologies rpc. + """ + + accelerator_topology_actions: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=16520833, + ) + + class InstanceGroupManagersCreateInstancesRequest(proto.Message): r"""InstanceGroupManagers.createInstances @@ -64955,10 +65394,16 @@ class InstanceGroupManagersDeletePerInstanceConfigsReq(proto.Message): class InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse(proto.Message): r""" + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: accelerator_topologies_info (MutableMapping[str, google.cloud.compute_v1beta.types.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyInfo]): The accelerator topology information returned per id of the topology location. + multi_mig (str): + URL to MMIG this MIG belongs to. + + This field is a member of `oneof`_ ``_multi_mig``. """ accelerator_topologies_info: MutableMapping[ @@ -64970,6 +65415,11 @@ class InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse(proto.Messa number=84833420, message="InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyInfo", ) + multi_mig: str = proto.Field( + proto.STRING, + number=403990085, + optional=True, + ) class InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyInfo( @@ -64990,6 +65440,20 @@ class InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorT the list of possible values. This field is a member of `oneof`_ ``_accelerator_topology_health``. + accelerator_topology_state (google.cloud.compute_v1beta.types.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyState): + + This field is a member of `oneof`_ ``_accelerator_topology_state``. + instances_health (str): + Check the InstancesHealth enum for the list + of possible values. + + This field is a member of `oneof`_ ``_instances_health``. + parent (str): + Identified by the topology Id in the + accelerator_topology_info map. Empty for the top-level + topology + + This field is a member of `oneof`_ ``_parent``. """ class AcceleratorTopologyHealth(proto.Enum): @@ -65015,12 +65479,33 @@ class AcceleratorTopologyHealth(proto.Enum): connectivity that makes this part of the infrastructure unsuitable for forming a working inter-chip connected group. + UNKNOWN (433141802): + No signal available """ UNDEFINED_ACCELERATOR_TOPOLOGY_HEALTH = 0 DEGRADED = 396890926 HEALTHY = 439801213 UNHEALTHY = 462118084 + UNKNOWN = 433141802 + + class InstancesHealth(proto.Enum): + r""" + + Values: + UNDEFINED_INSTANCES_HEALTH (0): + A value indicating that the enum field is not + set. + ALL_HEALTHY (519465151): + Infrastructure is healthy + UNHEALTHY_OR_MISSING (59982149): + Some VMs are in another state than RUNNING or + they are missing. + """ + + UNDEFINED_INSTANCES_HEALTH = 0 + ALL_HEALTHY = 519465151 + UNHEALTHY_OR_MISSING = 59982149 accelerator_topology: str = proto.Field( proto.STRING, @@ -65032,6 +65517,97 @@ class AcceleratorTopologyHealth(proto.Enum): number=323449944, optional=True, ) + accelerator_topology_state: "InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyState" = proto.Field( + proto.MESSAGE, + number=228860693, + optional=True, + message="InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyState", + ) + instances_health: str = proto.Field( + proto.STRING, + number=165893949, + optional=True, + ) + parent: str = proto.Field( + proto.STRING, + number=78317738, + optional=True, + ) + + +class InstanceGroupManagersGetAvailableAcceleratorTopologiesResponseAcceleratorTopologyState( + proto.Message +): + r"""Specifies the topology state + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + current_state (str): + Check the CurrentState enum for the list of + possible values. + + This field is a member of `oneof`_ ``_current_state``. + error (google.cloud.compute_v1beta.types.Error): + Reason why the topology state change failed + + This field is a member of `oneof`_ ``_error``. + error_timestamp (str): + Timestamp when the last error happened + + This field is a member of `oneof`_ ``_error_timestamp``. + """ + + class CurrentState(proto.Enum): + r""" + + Values: + UNDEFINED_CURRENT_STATE (0): + A value indicating that the enum field is not + set. + ACTIVATING (378825968): + No description available. + ACTIVE (314733318): + No description available. + ACTIVE_DEGRADED (471128135): + The topology is active but with potential + performance degradation. + DEACTIVATING (57182257): + No description available. + FAILED (455706685): + Critical non-retriable error that the user + has to act manually + INACTIVE (270421099): + No description available. + INCOMPLETE (11941214): + Not all VMs have been provisioned + """ + + UNDEFINED_CURRENT_STATE = 0 + ACTIVATING = 378825968 + ACTIVE = 314733318 + ACTIVE_DEGRADED = 471128135 + DEACTIVATING = 57182257 + FAILED = 455706685 + INACTIVE = 270421099 + INCOMPLETE = 11941214 + + current_state: str = proto.Field( + proto.STRING, + number=438511179, + optional=True, + ) + error: "Error" = proto.Field( + proto.MESSAGE, + number=96784904, + optional=True, + message="Error", + ) + error_timestamp: str = proto.Field( + proto.STRING, + number=219548575, + optional=True, + ) class InstanceGroupManagersListErrorsResponse(proto.Message): @@ -66093,11 +66669,11 @@ class InstanceParams(proto.Message): This field is a member of `oneof`_ ``_request_valid_for_duration``. 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 and values can be either in numeric format, such - as ``tagKeys/{tag_key_id}`` and ``tagValues/456`` or in - namespaced format such as + Input only. Resource manager tags to be bound to the + instance. Tag keys and values have the same definition as + resource manager tags. Keys and values can be either in + numeric format, such as ``tagKeys/{tag_key_id}`` and + ``tagValues/456`` or in namespaced format such as ``{org_id|project_id}/{tag_key_short_name}`` and ``{tag_value_short_name}``. The field is ignored (both PUT & PATCH) when empty. @@ -66240,11 +66816,12 @@ class InstanceProperties(proto.Message): 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. + Input only. 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. @@ -83947,8 +84524,8 @@ class ListManagedInstancesRegionInstanceGroupManagersRequest(proto.Message): ) -class ListNetworkAttachmentsRequest(proto.Message): - r"""A request message for NetworkAttachments.List. See the method +class ListNamedSetsRoutersRequest(proto.Message): + r"""A request message for Routers.ListNamedSets. See the method description for details. @@ -84061,7 +84638,7 @@ class ListNetworkAttachmentsRequest(proto.Message): project (str): Project ID for this request. region (str): - Name of the region of this request. + 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 @@ -84073,6 +84650,9 @@ class ListNetworkAttachmentsRequest(proto.Message): resources, with an error code. This field is a member of `oneof`_ ``_return_partial_success``. + router (str): + Name or id of the resource for this request. + Name should conform to RFC1035. """ filter: str = proto.Field( @@ -84108,11 +84688,15 @@ class ListNetworkAttachmentsRequest(proto.Message): number=517198390, optional=True, ) + router: str = proto.Field( + proto.STRING, + number=148608841, + ) -class ListNetworkEndpointGroupsRequest(proto.Message): - r"""A request message for NetworkEndpointGroups.List. See the - method description for details. +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 @@ -84223,6 +84807,8 @@ class ListNetworkEndpointGroupsRequest(proto.Message): 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 @@ -84234,10 +84820,6 @@ class ListNetworkEndpointGroupsRequest(proto.Message): resources, with an error code. This field is a member of `oneof`_ ``_return_partial_success``. - zone (str): - The name of thezone - where the network endpoint group is located. It - should comply with RFC1035. """ filter: str = proto.Field( @@ -84264,21 +84846,20 @@ class ListNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) 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. +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 @@ -84364,11 +84945,6 @@ class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message): ``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 @@ -84405,6 +84981,10 @@ class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message): resources, with an error code. This field is a member of `oneof`_ ``_return_partial_success``. + zone (str): + The name of thezone + where the network endpoint group is located. It + should comply with RFC1035. """ filter: str = proto.Field( @@ -84417,10 +84997,6 @@ class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message): number=54715419, optional=True, ) - network_endpoint_group: str = proto.Field( - proto.STRING, - number=433907078, - ) order_by: str = proto.Field( proto.STRING, number=160562920, @@ -84440,11 +85016,15 @@ class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message): number=517198390, optional=True, ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + ) -class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): +class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message): r"""A request message for - NetworkEndpointGroups.ListNetworkEndpoints. See the method + GlobalNetworkEndpointGroups.ListNetworkEndpoints. See the method description for details. @@ -84536,8 +85116,6 @@ class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): 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_v1beta.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 @@ -84574,10 +85152,6 @@ class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): resources, with an error code. 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( @@ -84594,11 +85168,6 @@ class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): 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, @@ -84618,15 +85187,11 @@ class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): number=517198390, optional=True, ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) -class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): +class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): r"""A request message for - RegionNetworkEndpointGroups.ListNetworkEndpoints. See the method + NetworkEndpointGroups.ListNetworkEndpoints. See the method description for details. @@ -84718,6 +85283,8 @@ class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): 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_v1beta.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 @@ -84743,10 +85310,6 @@ class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - region (str): - The name of theregion - 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 @@ -84758,6 +85321,10 @@ class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): resources, with an error code. 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( @@ -84774,6 +85341,11 @@ class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): 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, @@ -84788,20 +85360,195 @@ class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) 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. +class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): + r"""A request message for + RegionNetworkEndpointGroups.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. These two types of filter expressions cannot be + mixed in one request. + + 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 ``:*`` 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 onresource 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 GoogleRE2 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``. + + You cannot combine constraints on multiple fields using + regular expressions. + + 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. + region (str): + The name of theregion + 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. + + For example, when partial success behavior is + enabled, aggregatedList for a single zone scope + either returns all resources in the zone or no + resources, with an error code. + + 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, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + return_partial_success: bool = proto.Field( + proto.BOOL, + number=517198390, + optional=True, + ) + + +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 @@ -95331,8 +96078,97 @@ class ListServiceAttachmentsRequest(proto.Message): ) -class ListSnapshotsRequest(proto.Message): - r"""A request message for Snapshots.List. See the method +class ListSnapshotGroups(proto.Message): + r"""Contains a list of SnapshotGroup resources. + + .. _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_v1beta.types.SnapshotGroup]): + A list of SnapshotGroup resources. + kind (str): + Output only. 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 thanmaxResults, 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. [Output Only] Server-defined URL for this + resource. + + This field is a member of `oneof`_ ``_self_link``. + unreachables (MutableSequence[str]): + Output only. [Output Only] Unreachable resources. + end_interface: MixerListResponseWithEtagBuilder + warning (google.cloud.compute_v1beta.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["SnapshotGroup"] = proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="SnapshotGroup", + ) + 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 ListSnapshotGroupsRequest(proto.Message): + r"""A request message for SnapshotGroups.List. See the method description for details. @@ -95488,8 +96324,8 @@ class ListSnapshotsRequest(proto.Message): ) -class ListSslCertificatesRequest(proto.Message): - r"""A request message for SslCertificates.List. See the method +class ListSnapshotsRequest(proto.Message): + r"""A request message for Snapshots.List. See the method description for details. @@ -95645,8 +96481,8 @@ class ListSslCertificatesRequest(proto.Message): ) -class ListSslPoliciesRequest(proto.Message): - r"""A request message for SslPolicies.List. See the method +class ListSslCertificatesRequest(proto.Message): + r"""A request message for SslCertificates.List. See the method description for details. @@ -95802,8 +96638,8 @@ class ListSslPoliciesRequest(proto.Message): ) -class ListStoragePoolTypesRequest(proto.Message): - r"""A request message for StoragePoolTypes.List. See the method +class ListSslPoliciesRequest(proto.Message): + r"""A request message for SslPolicies.List. See the method description for details. @@ -95926,8 +96762,6 @@ class ListStoragePoolTypesRequest(proto.Message): resources, with an error code. This field is a member of `oneof`_ ``_return_partial_success``. - zone (str): - The name of the zone for this request. """ filter: str = proto.Field( @@ -95959,14 +96793,10 @@ class ListStoragePoolTypesRequest(proto.Message): number=517198390, optional=True, ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) -class ListStoragePoolsRequest(proto.Message): - r"""A request message for StoragePools.List. See the method +class ListStoragePoolTypesRequest(proto.Message): + r"""A request message for StoragePoolTypes.List. See the method description for details. @@ -96128,8 +96958,8 @@ class ListStoragePoolsRequest(proto.Message): ) -class ListSubnetworksRequest(proto.Message): - r"""A request message for Subnetworks.List. See the method +class ListStoragePoolsRequest(proto.Message): + r"""A request message for StoragePools.List. See the method description for details. @@ -96241,8 +97071,6 @@ class ListSubnetworksRequest(proto.Message): 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 @@ -96254,43 +97082,10 @@ class ListSubnetworksRequest(proto.Message): resources, with an error code. This field is a member of `oneof`_ ``_return_partial_success``. - views (str): - Defines the extra views returned back in the subnetwork - resource. Supported values: - - :: - - - WITH_UTILIZATION: Utilization data is included in the - response. - - Check the Views enum for the list of possible values. - - This field is a member of `oneof`_ ``_views``. + zone (str): + The name of the zone for this request. """ - class Views(proto.Enum): - r"""Defines the extra views returned back in the subnetwork resource. - Supported values: - - :: - - - WITH_UTILIZATION: Utilization data is included in the - response. - - Values: - UNDEFINED_VIEWS (0): - A value indicating that the enum field is not - set. - DEFAULT (115302945): - No description available. - WITH_UTILIZATION (504090633): - Utilization data is included in the response. - """ - - UNDEFINED_VIEWS = 0 - DEFAULT = 115302945 - WITH_UTILIZATION = 504090633 - filter: str = proto.Field( proto.STRING, number=336120696, @@ -96315,24 +97110,19 @@ class Views(proto.Enum): proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) return_partial_success: bool = proto.Field( proto.BOOL, number=517198390, optional=True, ) - views: str = proto.Field( + zone: str = proto.Field( proto.STRING, - number=112204398, - optional=True, + number=3744684, ) -class ListTargetGrpcProxiesRequest(proto.Message): - r"""A request message for TargetGrpcProxies.List. See the method +class ListSubnetworksRequest(proto.Message): + r"""A request message for Subnetworks.List. See the method description for details. @@ -96444,6 +97234,8 @@ class ListTargetGrpcProxiesRequest(proto.Message): 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 @@ -96455,8 +97247,43 @@ class ListTargetGrpcProxiesRequest(proto.Message): resources, with an error code. This field is a member of `oneof`_ ``_return_partial_success``. + views (str): + Defines the extra views returned back in the subnetwork + resource. Supported values: + + :: + + - WITH_UTILIZATION: Utilization data is included in the + response. + + Check the Views enum for the list of possible values. + + This field is a member of `oneof`_ ``_views``. """ + class Views(proto.Enum): + r"""Defines the extra views returned back in the subnetwork resource. + Supported values: + + :: + + - WITH_UTILIZATION: Utilization data is included in the + response. + + Values: + UNDEFINED_VIEWS (0): + A value indicating that the enum field is not + set. + DEFAULT (115302945): + No description available. + WITH_UTILIZATION (504090633): + Utilization data is included in the response. + """ + + UNDEFINED_VIEWS = 0 + DEFAULT = 115302945 + WITH_UTILIZATION = 504090633 + filter: str = proto.Field( proto.STRING, number=336120696, @@ -96481,15 +97308,24 @@ class ListTargetGrpcProxiesRequest(proto.Message): proto.STRING, number=227560217, ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) return_partial_success: bool = proto.Field( proto.BOOL, number=517198390, optional=True, ) + views: str = proto.Field( + proto.STRING, + number=112204398, + optional=True, + ) -class ListTargetHttpProxiesRequest(proto.Message): - r"""A request message for TargetHttpProxies.List. See the method +class ListTargetGrpcProxiesRequest(proto.Message): + r"""A request message for TargetGrpcProxies.List. See the method description for details. @@ -96645,8 +97481,8 @@ class ListTargetHttpProxiesRequest(proto.Message): ) -class ListTargetHttpsProxiesRequest(proto.Message): - r"""A request message for TargetHttpsProxies.List. See the method +class ListTargetHttpProxiesRequest(proto.Message): + r"""A request message for TargetHttpProxies.List. See the method description for details. @@ -96802,8 +97638,8 @@ class ListTargetHttpsProxiesRequest(proto.Message): ) -class ListTargetInstancesRequest(proto.Message): - r"""A request message for TargetInstances.List. See the method +class ListTargetHttpsProxiesRequest(proto.Message): + r"""A request message for TargetHttpsProxies.List. See the method description for details. @@ -96926,8 +97762,6 @@ class ListTargetInstancesRequest(proto.Message): resources, with an error code. This field is a member of `oneof`_ ``_return_partial_success``. - zone (str): - Name of the zone scoping this request. """ filter: str = proto.Field( @@ -96959,14 +97793,10 @@ class ListTargetInstancesRequest(proto.Message): 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 +class ListTargetInstancesRequest(proto.Message): + r"""A request message for TargetInstances.List. See the method description for details. @@ -97078,8 +97908,6 @@ class ListTargetPoolsRequest(proto.Message): 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 @@ -97091,6 +97919,8 @@ class ListTargetPoolsRequest(proto.Message): resources, with an error code. This field is a member of `oneof`_ ``_return_partial_success``. + zone (str): + Name of the zone scoping this request. """ filter: str = proto.Field( @@ -97117,19 +97947,19 @@ class ListTargetPoolsRequest(proto.Message): proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) return_partial_success: bool = proto.Field( proto.BOOL, number=517198390, optional=True, ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + ) -class ListTargetSslProxiesRequest(proto.Message): - r"""A request message for TargetSslProxies.List. See the method +class ListTargetPoolsRequest(proto.Message): + r"""A request message for TargetPools.List. See the method description for details. @@ -97241,6 +98071,8 @@ class ListTargetSslProxiesRequest(proto.Message): 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 @@ -97278,6 +98110,10 @@ class ListTargetSslProxiesRequest(proto.Message): proto.STRING, number=227560217, ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) return_partial_success: bool = proto.Field( proto.BOOL, number=517198390, @@ -97285,8 +98121,8 @@ class ListTargetSslProxiesRequest(proto.Message): ) -class ListTargetTcpProxiesRequest(proto.Message): - r"""A request message for TargetTcpProxies.List. See the method +class ListTargetSslProxiesRequest(proto.Message): + r"""A request message for TargetSslProxies.List. See the method description for details. @@ -97442,8 +98278,8 @@ class ListTargetTcpProxiesRequest(proto.Message): ) -class ListTargetVpnGatewaysRequest(proto.Message): - r"""A request message for TargetVpnGateways.List. See the method +class ListTargetTcpProxiesRequest(proto.Message): + r"""A request message for TargetTcpProxies.List. See the method description for details. @@ -97555,8 +98391,6 @@ class ListTargetVpnGatewaysRequest(proto.Message): 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 @@ -97594,10 +98428,6 @@ class ListTargetVpnGatewaysRequest(proto.Message): proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) return_partial_success: bool = proto.Field( proto.BOOL, number=517198390, @@ -97605,8 +98435,8 @@ class ListTargetVpnGatewaysRequest(proto.Message): ) -class ListUrlMapsRequest(proto.Message): - r"""A request message for UrlMaps.List. See the method +class ListTargetVpnGatewaysRequest(proto.Message): + r"""A request message for TargetVpnGateways.List. See the method description for details. @@ -97718,6 +98548,8 @@ class ListUrlMapsRequest(proto.Message): 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 @@ -97755,6 +98587,10 @@ class ListUrlMapsRequest(proto.Message): proto.STRING, number=227560217, ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) return_partial_success: bool = proto.Field( proto.BOOL, number=517198390, @@ -97762,9 +98598,9 @@ class ListUrlMapsRequest(proto.Message): ) -class ListUsableBackendBucketsRequest(proto.Message): - r"""A request message for BackendBuckets.ListUsable. See the - method description for details. +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 @@ -97919,8 +98755,8 @@ class ListUsableBackendBucketsRequest(proto.Message): ) -class ListUsableBackendServicesRequest(proto.Message): - r"""A request message for BackendServices.ListUsable. See the +class ListUsableBackendBucketsRequest(proto.Message): + r"""A request message for BackendBuckets.ListUsable. See the method description for details. @@ -98076,9 +98912,9 @@ class ListUsableBackendServicesRequest(proto.Message): ) -class ListUsableRegionBackendBucketsRequest(proto.Message): - r"""A request message for RegionBackendBuckets.ListUsable. See - the method description for details. +class ListUsableBackendServicesRequest(proto.Message): + r"""A request message for BackendServices.ListUsable. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -98189,10 +99025,6 @@ class ListUsableRegionBackendBucketsRequest(proto.Message): 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. - It must be a string that meets the requirements - in RFC1035. return_partial_success (bool): Opt-in for partial success behavior which provides partial results in case of failure. The @@ -98230,10 +99062,6 @@ class ListUsableRegionBackendBucketsRequest(proto.Message): proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) return_partial_success: bool = proto.Field( proto.BOOL, number=517198390, @@ -98241,8 +99069,8 @@ class ListUsableRegionBackendBucketsRequest(proto.Message): ) -class ListUsableRegionBackendServicesRequest(proto.Message): - r"""A request message for RegionBackendServices.ListUsable. See +class ListUsableRegionBackendBucketsRequest(proto.Message): + r"""A request message for RegionBackendBuckets.ListUsable. See the method description for details. @@ -98406,9 +99234,9 @@ class ListUsableRegionBackendServicesRequest(proto.Message): ) -class ListUsableSubnetworksRequest(proto.Message): - r"""A request message for Subnetworks.ListUsable. See the method - description for details. +class ListUsableRegionBackendServicesRequest(proto.Message): + r"""A request message for RegionBackendServices.ListUsable. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -98519,6 +99347,10 @@ class ListUsableSubnetworksRequest(proto.Message): 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. + It must be a string that meets the requirements + in RFC1035. return_partial_success (bool): Opt-in for partial success behavior which provides partial results in case of failure. The @@ -98530,13 +99362,6 @@ class ListUsableSubnetworksRequest(proto.Message): resources, with an error code. This field is a member of `oneof`_ ``_return_partial_success``. - service_project (str): - The project id or project number in which the subnetwork is - intended to be used. Only applied for Shared VPC. See - `Shared VPC - documentation `__ - - This field is a member of `oneof`_ ``_service_project``. """ filter: str = proto.Field( @@ -98563,20 +99388,19 @@ class ListUsableSubnetworksRequest(proto.Message): proto.STRING, number=227560217, ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) return_partial_success: bool = proto.Field( proto.BOOL, number=517198390, optional=True, ) - service_project: str = proto.Field( - proto.STRING, - number=530592655, - optional=True, - ) -class ListVpnGatewaysRequest(proto.Message): - r"""A request message for VpnGateways.List. See the method +class ListUsableSubnetworksRequest(proto.Message): + r"""A request message for Subnetworks.ListUsable. See the method description for details. @@ -98688,8 +99512,177 @@ class ListVpnGatewaysRequest(proto.Message): 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. + + For example, when partial success behavior is + enabled, aggregatedList for a single zone scope + either returns all resources in the zone or no + resources, with an error code. + + This field is a member of `oneof`_ ``_return_partial_success``. + service_project (str): + The project id or project number in which the subnetwork is + intended to be used. Only applied for Shared VPC. See + `Shared VPC + documentation `__ + + This field is a member of `oneof`_ ``_service_project``. + """ + + 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, + ) + service_project: str = proto.Field( + proto.STRING, + number=530592655, + 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. These two types of filter expressions cannot be + mixed in one request. + + 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 ``:*`` 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 onresource 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 GoogleRE2 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``. + + You cannot combine constraints on multiple fields using + regular expressions. + + 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 @@ -99798,16 +100791,28 @@ class LocationPolicy(proto.Message): Attributes: locations (MutableMapping[str, google.cloud.compute_v1beta.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. + 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. The + bulkInsert operation doesn't create instances in an AI zone, + even if an AI zone is available in the specified region. For + example, if you set a DENY preference for us-central1-a, + Compute Engine will consider us-central1-b and us-central1-c + for instance creation, but not us-central1-ai1a. Also, you + can't use the locations[] configuration to allow instance + creation in an AI zone. To include an AI zone in bulkInsert + operations, use the locationPolicy.zones[] field. 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``. + zones (MutableSequence[google.cloud.compute_v1beta.types.LocationPolicyZoneConfiguration]): + The bulkInsert operation applies any + preferences set in the locations field to the + specific zones listed in the zones field if the + same zones are specified in both fields. """ class TargetShape(proto.Enum): @@ -99857,6 +100862,11 @@ class TargetShape(proto.Enum): number=338621299, optional=True, ) + zones: MutableSequence["LocationPolicyZoneConfiguration"] = proto.RepeatedField( + proto.MESSAGE, + number=116085319, + message="LocationPolicyZoneConfiguration", + ) class LocationPolicyLocation(proto.Message): @@ -99932,6 +100942,28 @@ class LocationPolicyLocationConstraints(proto.Message): ) +class LocationPolicyZoneConfiguration(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 + request is called. Zones must be represented as + valid partial URLs, such as zones/us-central1-a. + + This field is a member of `oneof`_ ``_zone``. + """ + + zone: str = proto.Field( + proto.STRING, + number=3744684, + optional=True, + ) + + class MachineImage(proto.Message): r"""Represents a machine image resource. @@ -102447,6 +103479,92 @@ class NamedPort(proto.Message): ) +class NamedSet(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + description (str): + An optional description of named set. + + This field is a member of `oneof`_ ``_description``. + elements (MutableSequence[google.cloud.compute_v1beta.types.Expr]): + CEL expressions that are comparable to + constructs of this set's type (see Policy + Language). + fingerprint (str): + A fingerprint for the Named Set being applied + to this Router, which is essentially a hash of + the Named Set used for optimistic locking. The + fingerprint is initially generated by Compute + Engine and changes after every request to modify + or update the Named Set. You must always provide + an up-to-date fingerprint hash in order to + update or change labels. + + To see the latest fingerprint, make a + getNamedSet() request to retrieve a Named Set. + + This field is a member of `oneof`_ ``_fingerprint``. + name (str): + This set's name, which must be a resource ID + segment and unique within all named sets owned + by the Router. Name should conform to RFC1035. + + This field is a member of `oneof`_ ``_name``. + type_ (str): + This named set's type + Check the Type enum for the list of possible + values. + + This field is a member of `oneof`_ ``_type``. + """ + + class Type(proto.Enum): + r"""This named set's type + + Values: + UNDEFINED_TYPE (0): + A value indicating that the enum field is not + set. + NAMED_SET_TYPE_COMMUNITY (263444871): + The Named Set is a Community Named Set. + NAMED_SET_TYPE_PREFIX (228038036): + The Named Set is a Prefix Named Set. + """ + + UNDEFINED_TYPE = 0 + NAMED_SET_TYPE_COMMUNITY = 263444871 + NAMED_SET_TYPE_PREFIX = 228038036 + + description: str = proto.Field( + proto.STRING, + number=422937596, + optional=True, + ) + elements: MutableSequence["Expr"] = proto.RepeatedField( + proto.MESSAGE, + number=528531703, + message="Expr", + ) + fingerprint: str = proto.Field( + proto.STRING, + number=234678500, + optional=True, + ) + name: str = proto.Field( + proto.STRING, + number=3373707, + optional=True, + ) + type_: str = proto.Field( + proto.STRING, + number=3575610, + optional=True, + ) + + class NatIpInfo(proto.Message): r"""Contains NAT IP information of a NAT config (i.e. usage status, mode). @@ -113378,6 +114496,71 @@ class PatchInterconnectRequest(proto.Message): ) +class PatchNamedSetRouterRequest(proto.Message): + r"""A request message for Routers.PatchNamedSet. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + named_set_resource (google.cloud.compute_v1beta.types.NamedSet): + 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``. + router (str): + Name of the Router resource where Named Set + is defined. + """ + + named_set_resource: "NamedSet" = proto.Field( + proto.MESSAGE, + number=408608401, + message="NamedSet", + ) + 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 PatchNetworkAttachmentRequest(proto.Message): r"""A request message for NetworkAttachments.Patch. See the method description for details. @@ -124623,6 +125806,12 @@ class Reservation(proto.Message): digit, except the last character, which cannot be a dash. This field is a member of `oneof`_ ``_name``. + params (google.cloud.compute_v1beta.types.ReservationParams): + Input only. Additional params passed with the + request, but not persisted as part of resource + payload. + + This field is a member of `oneof`_ ``_params``. protection_tier (str): Protection tier for the workload which specifies the workload expectations in the event @@ -124950,6 +126139,12 @@ class Status(proto.Enum): number=3373707, optional=True, ) + params: "ReservationParams" = proto.Field( + proto.MESSAGE, + number=78313862, + optional=True, + message="ReservationParams", + ) protection_tier: str = proto.Field( proto.STRING, number=503959432, @@ -125780,6 +126975,28 @@ def raw_page(self): ) +class ReservationParams(proto.Message): + r"""Additional reservation params. + + Attributes: + resource_manager_tags (MutableMapping[str, str]): + Input only. Resource manager tags to be bound to the + reservation. Tag keys and values have the same definition as + resource manager tags. Keys and values can be either in + numeric format, such as ``tagKeys/{tag_key_id}`` and + ``tagValues/{tag_value_id}`` or in namespaced format such as + ``{org_id|project_id}/{tag_key_short_name}`` and + ``{tag_value_short_name}``. The field is ignored (both PUT & + PATCH) when empty. + """ + + resource_manager_tags: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=377671164, + ) + + class ReservationSlot(proto.Message): r"""Represents a reservation slot resource. @@ -125861,6 +127078,9 @@ class State(proto.Enum): deleted. STATE_UNSPECIFIED (470755401): No description available. + UNAVAILABLE (413756464): + The reservation slot is currently + unavailable. """ UNDEFINED_STATE = 0 @@ -125868,6 +127088,7 @@ class State(proto.Enum): CREATING = 455564985 DELETING = 528602024 STATE_UNSPECIFIED = 470755401 + UNAVAILABLE = 413756464 creation_timestamp: str = proto.Field( proto.STRING, @@ -133659,6 +134880,34 @@ class RouterStatusResponse(proto.Message): ) +class RoutersGetNamedSetResponse(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + etag (str): + end_interface: MixerGetResponseWithEtagBuilder + + This field is a member of `oneof`_ ``_etag``. + resource (google.cloud.compute_v1beta.types.NamedSet): + + This field is a member of `oneof`_ ``_resource``. + """ + + etag: str = proto.Field( + proto.STRING, + number=3123477, + optional=True, + ) + resource: "NamedSet" = proto.Field( + proto.MESSAGE, + number=195806222, + optional=True, + message="NamedSet", + ) + + class RoutersGetRoutePolicyResponse(proto.Message): r""" @@ -133767,6 +135016,95 @@ def raw_page(self): ) +class RoutersListNamedSets(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``. + kind (str): + Output only. [Output Only] Type of resource. + Alwayscompute#routersListNamedSets for lists of named sets. + + 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 thanmaxResults, 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_v1beta.types.NamedSet]): + [Output Only] A list of named sets. + self_link (str): + Output only. [Output Only] Server-defined URL for this + resource. + + This field is a member of `oneof`_ ``_self_link``. + unreachables (MutableSequence[str]): + Output only. [Output Only] Unreachable resources. + warning (google.cloud.compute_v1beta.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, + ) + kind: str = proto.Field( + proto.STRING, + number=3292052, + optional=True, + ) + next_page_token: str = proto.Field( + proto.STRING, + number=79797525, + optional=True, + ) + result: MutableSequence["NamedSet"] = proto.RepeatedField( + proto.MESSAGE, + number=139315229, + message="NamedSet", + ) + 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 RoutersListRoutePolicies(proto.Message): r""" @@ -140604,6 +141942,34 @@ class SetIamPolicyServiceAttachmentRequest(proto.Message): ) +class SetIamPolicySnapshotGroupRequest(proto.Message): + r"""A request message for SnapshotGroups.SetIamPolicy. See the + method description for details. + + Attributes: + global_set_policy_request_resource (google.cloud.compute_v1beta.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 SetIamPolicySnapshotRequest(proto.Message): r"""A request message for Snapshots.SetIamPolicy. See the method description for details. @@ -144934,6 +146300,16 @@ class Snapshot(proto.Message): snapshot later. This field is a member of `oneof`_ ``_snapshot_encryption_key``. + snapshot_group_id (str): + Output only. [Output Only] The unique ID of the snapshot + group that this snapshot belongs to. + + This field is a member of `oneof`_ ``_snapshot_group_id``. + snapshot_group_name (str): + Output only. [Output only] The snapshot group that this + snapshot belongs to. + + This field is a member of `oneof`_ ``_snapshot_group_name``. snapshot_type (str): Indicates the type of the snapshot. Check the SnapshotType enum for the list of @@ -145028,8 +146404,7 @@ class Snapshot(proto.Message): Cloud Storage bucket storage location of the snapshot (regional or multi-regional). user_licenses (MutableSequence[str]): - [Output Only] A list of user provided licenses represented - by a list of URLs to the license resource. + """ class Architecture(proto.Enum): @@ -145244,6 +146619,16 @@ class StorageBytesStatus(proto.Enum): optional=True, message="CustomerEncryptionKey", ) + snapshot_group_id: str = proto.Field( + proto.STRING, + number=255004406, + optional=True, + ) + snapshot_group_name: str = proto.Field( + proto.STRING, + number=246247846, + optional=True, + ) snapshot_type: str = proto.Field( proto.STRING, number=124349653, @@ -145412,6 +146797,271 @@ def raw_page(self): ) +class SnapshotGroup(proto.Message): + r"""Represents a SnapshotGroup resource. + + A snapshot group is a set of snapshots that represents a point + in time state of a consistency group. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + creation_timestamp (str): + Output only. [Output Only] Creation timestamp inRFC3339 text + format. + + This field is a member of `oneof`_ ``_creation_timestamp``. + description (str): + Optional. 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. [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. [Output Only] Type of the resource. + Alwayscompute#snapshotGroup for SnapshotGroup resources. + + This field is a member of `oneof`_ ``_kind``. + name (str): + Identifier. Name of the resource; provided by the client + when the resource is created. The name must be 1-63 + characters long, and comply withRFC1035. 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. [Output Only] Server-defined URL for the + resource. + + This field is a member of `oneof`_ ``_self_link``. + self_link_with_id (str): + Output only. [Output Only] Server-defined URL for this + resource's resource id. + + This field is a member of `oneof`_ ``_self_link_with_id``. + source_info (google.cloud.compute_v1beta.types.SnapshotGroupSourceInfo): + Output only. [Output Only] + + This field is a member of `oneof`_ ``_source_info``. + source_instant_snapshot_group (str): + Input field for the source instant snapshot + group. + + This field is a member of `oneof`_ ``_source_instant_snapshot_group``. + source_instant_snapshot_group_info (google.cloud.compute_v1beta.types.SnapshotGroupSourceInstantSnapshotGroupInfo): + Output only. [Output Only] + + This field is a member of `oneof`_ ``_source_instant_snapshot_group_info``. + status (str): + Output only. [Output Only] 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. [Output Only] + + 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. + INVALID (530283991): + No description available. + READY (77848963): + No description available. + UNKNOWN (433141802): + No description available. + UPLOADING (267603489): + No description available. + """ + + UNDEFINED_STATUS = 0 + CREATING = 455564985 + DELETING = 528602024 + FAILED = 455706685 + INVALID = 530283991 + READY = 77848963 + UNKNOWN = 433141802 + UPLOADING = 267603489 + + 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, + ) + self_link: str = proto.Field( + proto.STRING, + number=456214797, + optional=True, + ) + self_link_with_id: str = proto.Field( + proto.STRING, + number=44520962, + optional=True, + ) + source_info: "SnapshotGroupSourceInfo" = proto.Field( + proto.MESSAGE, + number=451907154, + optional=True, + message="SnapshotGroupSourceInfo", + ) + source_instant_snapshot_group: str = proto.Field( + proto.STRING, + number=525991686, + optional=True, + ) + source_instant_snapshot_group_info: "SnapshotGroupSourceInstantSnapshotGroupInfo" = proto.Field( + proto.MESSAGE, + number=62296647, + optional=True, + message="SnapshotGroupSourceInstantSnapshotGroupInfo", + ) + status: str = proto.Field( + proto.STRING, + number=181260274, + optional=True, + ) + + +class SnapshotGroupParameters(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + replica_zones (MutableSequence[str]): + URLs of the zones where disks should be + replicated to. Only applicable for regional + resources. + source_snapshot_group (str): + The source snapshot group used to create + disks. 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/snapshotGroups/snapshotGroup + - + projects/project/global/snapshotGroups/snapshotGroup + - global/snapshotGroups/snapshotGroup + + This field is a member of `oneof`_ ``_source_snapshot_group``. + type_ (str): + URL of the disk type resource describing + which disk type to use to create disks. 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``. + """ + + replica_zones: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=48438272, + ) + source_snapshot_group: str = proto.Field( + proto.STRING, + number=225130728, + optional=True, + ) + type_: str = proto.Field( + proto.STRING, + number=3575610, + optional=True, + ) + + +class SnapshotGroupSourceInfo(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + consistency_group (str): + + This field is a member of `oneof`_ ``_consistency_group``. + consistency_group_id (str): + + This field is a member of `oneof`_ ``_consistency_group_id``. + """ + + consistency_group: str = proto.Field( + proto.STRING, + number=508183960, + optional=True, + ) + consistency_group_id: str = proto.Field( + proto.STRING, + number=85599522, + optional=True, + ) + + +class SnapshotGroupSourceInstantSnapshotGroupInfo(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + instant_snapshot_group (str): + + This field is a member of `oneof`_ ``_instant_snapshot_group``. + instant_snapshot_group_id (str): + + This field is a member of `oneof`_ ``_instant_snapshot_group_id``. + """ + + instant_snapshot_group: str = proto.Field( + proto.STRING, + number=223180386, + optional=True, + ) + instant_snapshot_group_id: str = proto.Field( + proto.STRING, + number=157599768, + optional=True, + ) + + class SnapshotList(proto.Message): r"""Contains a list of Snapshot resources. @@ -145491,11 +147141,11 @@ class SnapshotParams(proto.Message): Attributes: resource_manager_tags (MutableMapping[str, str]): - Resource manager tags to be bound to the snapshot. Tag keys - and values have the same definition as resource manager - tags. Keys and values can be either in numeric format, such - as ``tagKeys/{tag_key_id}`` and ``tagValues/456`` or in - namespaced format such as + Input only. Resource manager tags to be bound to the + snapshot. Tag keys and values have the same definition as + resource manager tags. Keys and values can be either in + numeric format, such as ``tagKeys/{tag_key_id}`` and + ``tagValues/456`` or in namespaced format such as ``{org_id|project_id}/{tag_key_short_name}`` and ``{tag_value_short_name}``. The field is ignored (both PUT & PATCH) when empty. @@ -155814,9 +157464,79 @@ class TestIamPermissionsPacketMirroringRequest(proto.Message): ) -class TestIamPermissionsRegionAutoscalerRequest(proto.Message): - r"""A request message for RegionAutoscalers.TestIamPermissions. - See the method description for details. +class TestIamPermissionsRegionAutoscalerRequest(proto.Message): + r"""A request message for RegionAutoscalers.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_v1beta.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 TestIamPermissionsRegionBackendBucketRequest(proto.Message): + r"""A request message for + RegionBackendBuckets.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_v1beta.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 TestIamPermissionsRegionBackendServiceRequest(proto.Message): + r"""A request message for + RegionBackendServices.TestIamPermissions. See the method + description for details. Attributes: project (str): @@ -155848,10 +157568,9 @@ class TestIamPermissionsRegionAutoscalerRequest(proto.Message): ) -class TestIamPermissionsRegionBackendBucketRequest(proto.Message): - r"""A request message for - RegionBackendBuckets.TestIamPermissions. See the method - description for details. +class TestIamPermissionsRegionCommitmentRequest(proto.Message): + r"""A request message for RegionCommitments.TestIamPermissions. + See the method description for details. Attributes: project (str): @@ -155883,9 +157602,9 @@ class TestIamPermissionsRegionBackendBucketRequest(proto.Message): ) -class TestIamPermissionsRegionBackendServiceRequest(proto.Message): +class TestIamPermissionsRegionCompositeHealthCheckRequest(proto.Message): r"""A request message for - RegionBackendServices.TestIamPermissions. See the method + RegionCompositeHealthChecks.TestIamPermissions. See the method description for details. Attributes: @@ -155918,9 +157637,9 @@ class TestIamPermissionsRegionBackendServiceRequest(proto.Message): ) -class TestIamPermissionsRegionCommitmentRequest(proto.Message): - r"""A request message for RegionCommitments.TestIamPermissions. - See the method description for details. +class TestIamPermissionsRegionDiskRequest(proto.Message): + r"""A request message for RegionDisks.TestIamPermissions. See the + method description for details. Attributes: project (str): @@ -155952,10 +157671,10 @@ class TestIamPermissionsRegionCommitmentRequest(proto.Message): ) -class TestIamPermissionsRegionCompositeHealthCheckRequest(proto.Message): +class TestIamPermissionsRegionHealthAggregationPolicyRequest(proto.Message): r"""A request message for - RegionCompositeHealthChecks.TestIamPermissions. See the method - description for details. + RegionHealthAggregationPolicies.TestIamPermissions. See the + method description for details. Attributes: project (str): @@ -155987,9 +157706,9 @@ class TestIamPermissionsRegionCompositeHealthCheckRequest(proto.Message): ) -class TestIamPermissionsRegionDiskRequest(proto.Message): - r"""A request message for RegionDisks.TestIamPermissions. See the - method description for details. +class TestIamPermissionsRegionHealthCheckRequest(proto.Message): + r"""A request message for RegionHealthChecks.TestIamPermissions. + See the method description for details. Attributes: project (str): @@ -156021,10 +157740,10 @@ class TestIamPermissionsRegionDiskRequest(proto.Message): ) -class TestIamPermissionsRegionHealthAggregationPolicyRequest(proto.Message): +class TestIamPermissionsRegionHealthCheckServiceRequest(proto.Message): r"""A request message for - RegionHealthAggregationPolicies.TestIamPermissions. See the - method description for details. + RegionHealthCheckServices.TestIamPermissions. See the method + description for details. Attributes: project (str): @@ -156056,8 +157775,8 @@ class TestIamPermissionsRegionHealthAggregationPolicyRequest(proto.Message): ) -class TestIamPermissionsRegionHealthCheckRequest(proto.Message): - r"""A request message for RegionHealthChecks.TestIamPermissions. +class TestIamPermissionsRegionHealthSourceRequest(proto.Message): + r"""A request message for RegionHealthSources.TestIamPermissions. See the method description for details. Attributes: @@ -156090,9 +157809,9 @@ class TestIamPermissionsRegionHealthCheckRequest(proto.Message): ) -class TestIamPermissionsRegionHealthCheckServiceRequest(proto.Message): +class TestIamPermissionsRegionInstanceGroupManagerRequest(proto.Message): r"""A request message for - RegionHealthCheckServices.TestIamPermissions. See the method + RegionInstanceGroupManagers.TestIamPermissions. See the method description for details. Attributes: @@ -156125,9 +157844,10 @@ class TestIamPermissionsRegionHealthCheckServiceRequest(proto.Message): ) -class TestIamPermissionsRegionHealthSourceRequest(proto.Message): - r"""A request message for RegionHealthSources.TestIamPermissions. - See the method description for details. +class TestIamPermissionsRegionInstanceGroupRequest(proto.Message): + r"""A request message for + RegionInstanceGroups.TestIamPermissions. See the method + description for details. Attributes: project (str): @@ -156159,9 +157879,9 @@ class TestIamPermissionsRegionHealthSourceRequest(proto.Message): ) -class TestIamPermissionsRegionInstanceGroupManagerRequest(proto.Message): +class TestIamPermissionsRegionInstantSnapshotGroupRequest(proto.Message): r"""A request message for - RegionInstanceGroupManagers.TestIamPermissions. See the method + RegionInstantSnapshotGroups.TestIamPermissions. See the method description for details. Attributes: @@ -156194,9 +157914,9 @@ class TestIamPermissionsRegionInstanceGroupManagerRequest(proto.Message): ) -class TestIamPermissionsRegionInstanceGroupRequest(proto.Message): +class TestIamPermissionsRegionInstantSnapshotRequest(proto.Message): r"""A request message for - RegionInstanceGroups.TestIamPermissions. See the method + RegionInstantSnapshots.TestIamPermissions. See the method description for details. Attributes: @@ -156229,9 +157949,9 @@ class TestIamPermissionsRegionInstanceGroupRequest(proto.Message): ) -class TestIamPermissionsRegionInstantSnapshotGroupRequest(proto.Message): +class TestIamPermissionsRegionNetworkFirewallPolicyRequest(proto.Message): r"""A request message for - RegionInstantSnapshotGroups.TestIamPermissions. See the method + RegionNetworkFirewallPolicies.TestIamPermissions. See the method description for details. Attributes: @@ -156264,9 +157984,9 @@ class TestIamPermissionsRegionInstantSnapshotGroupRequest(proto.Message): ) -class TestIamPermissionsRegionInstantSnapshotRequest(proto.Message): +class TestIamPermissionsRegionNotificationEndpointRequest(proto.Message): r"""A request message for - RegionInstantSnapshots.TestIamPermissions. See the method + RegionNotificationEndpoints.TestIamPermissions. See the method description for details. Attributes: @@ -156299,10 +158019,9 @@ class TestIamPermissionsRegionInstantSnapshotRequest(proto.Message): ) -class TestIamPermissionsRegionNetworkFirewallPolicyRequest(proto.Message): - r"""A request message for - RegionNetworkFirewallPolicies.TestIamPermissions. See the method - description for details. +class TestIamPermissionsRegionSnapshotRequest(proto.Message): + r"""A request message for RegionSnapshots.TestIamPermissions. See + the method description for details. Attributes: project (str): @@ -156334,9 +158053,9 @@ class TestIamPermissionsRegionNetworkFirewallPolicyRequest(proto.Message): ) -class TestIamPermissionsRegionNotificationEndpointRequest(proto.Message): +class TestIamPermissionsRegionSslCertificateRequest(proto.Message): r"""A request message for - RegionNotificationEndpoints.TestIamPermissions. See the method + RegionSslCertificates.TestIamPermissions. See the method description for details. Attributes: @@ -156369,9 +158088,9 @@ class TestIamPermissionsRegionNotificationEndpointRequest(proto.Message): ) -class TestIamPermissionsRegionSnapshotRequest(proto.Message): - r"""A request message for RegionSnapshots.TestIamPermissions. See - the method description for details. +class TestIamPermissionsRegionSslPolicyRequest(proto.Message): + r"""A request message for RegionSslPolicies.TestIamPermissions. + See the method description for details. Attributes: project (str): @@ -156403,9 +158122,9 @@ class TestIamPermissionsRegionSnapshotRequest(proto.Message): ) -class TestIamPermissionsRegionSslCertificateRequest(proto.Message): +class TestIamPermissionsRegionTargetHttpProxyRequest(proto.Message): r"""A request message for - RegionSslCertificates.TestIamPermissions. See the method + RegionTargetHttpProxies.TestIamPermissions. See the method description for details. Attributes: @@ -156438,9 +158157,10 @@ class TestIamPermissionsRegionSslCertificateRequest(proto.Message): ) -class TestIamPermissionsRegionSslPolicyRequest(proto.Message): - r"""A request message for RegionSslPolicies.TestIamPermissions. - See the method description for details. +class TestIamPermissionsRegionTargetHttpsProxyRequest(proto.Message): + r"""A request message for + RegionTargetHttpsProxies.TestIamPermissions. See the method + description for details. Attributes: project (str): @@ -156472,9 +158192,9 @@ class TestIamPermissionsRegionSslPolicyRequest(proto.Message): ) -class TestIamPermissionsRegionTargetHttpProxyRequest(proto.Message): +class TestIamPermissionsRegionTargetTcpProxyRequest(proto.Message): r"""A request message for - RegionTargetHttpProxies.TestIamPermissions. See the method + RegionTargetTcpProxies.TestIamPermissions. See the method description for details. Attributes: @@ -156507,11 +158227,161 @@ class TestIamPermissionsRegionTargetHttpProxyRequest(proto.Message): ) -class TestIamPermissionsRegionTargetHttpsProxyRequest(proto.Message): +class TestIamPermissionsRegionUrlMapRequest(proto.Message): + r"""A request message for RegionUrlMaps.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_v1beta.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 TestIamPermissionsReservationBlockRequest(proto.Message): + r"""A request message for ReservationBlocks.TestIamPermissions. + See the method description for details. + + Attributes: + parent_resource (str): + Name or id of parent resource of the resource + for this request. + 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_v1beta.types.TestPermissionsRequest): + The body resource for this request + zone (str): + The name of the zone for this request. + """ + + parent_resource: str = proto.Field( + proto.STRING, + number=18091011, + ) + 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 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_v1beta.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 TestIamPermissionsReservationSubBlockRequest(proto.Message): r"""A request message for - RegionTargetHttpsProxies.TestIamPermissions. See the method + ReservationSubBlocks.TestIamPermissions. See the method description for details. + Attributes: + parent_resource (str): + Name or id of parent resource of the resource + for this request. + 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_v1beta.types.TestPermissionsRequest): + The body resource for this request + zone (str): + The name of the zone for this request. + """ + + parent_resource: str = proto.Field( + proto.STRING, + number=18091011, + ) + 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. @@ -156542,16 +158412,13 @@ class TestIamPermissionsRegionTargetHttpsProxyRequest(proto.Message): ) -class TestIamPermissionsRegionTargetTcpProxyRequest(proto.Message): - r"""A request message for - RegionTargetTcpProxies.TestIamPermissions. See the method - description for details. +class TestIamPermissionsRouteRequest(proto.Message): + r"""A request message for Routes.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_v1beta.types.TestPermissionsRequest): @@ -156562,10 +158429,6 @@ class TestIamPermissionsRegionTargetTcpProxyRequest(proto.Message): proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) resource: str = proto.Field( proto.STRING, number=195806222, @@ -156577,9 +158440,9 @@ class TestIamPermissionsRegionTargetTcpProxyRequest(proto.Message): ) -class TestIamPermissionsRegionUrlMapRequest(proto.Message): - r"""A request message for RegionUrlMaps.TestIamPermissions. See - the method description for details. +class TestIamPermissionsRouterRequest(proto.Message): + r"""A request message for Routers.TestIamPermissions. See the + method description for details. Attributes: project (str): @@ -156611,28 +158474,19 @@ class TestIamPermissionsRegionUrlMapRequest(proto.Message): ) -class TestIamPermissionsReservationBlockRequest(proto.Message): - r"""A request message for ReservationBlocks.TestIamPermissions. +class TestIamPermissionsSecurityPolicyRequest(proto.Message): + r"""A request message for SecurityPolicies.TestIamPermissions. See the method description for details. Attributes: - parent_resource (str): - Name or id of parent resource of the resource - for this request. 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_v1beta.types.TestPermissionsRequest): The body resource for this request - zone (str): - The name of the zone for this request. """ - parent_resource: str = proto.Field( - proto.STRING, - number=18091011, - ) project: str = proto.Field( proto.STRING, number=227560217, @@ -156646,90 +158500,10 @@ class TestIamPermissionsReservationBlockRequest(proto.Message): number=439214758, message="TestPermissionsRequest", ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) - - -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_v1beta.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 TestIamPermissionsReservationSubBlockRequest(proto.Message): - r"""A request message for - ReservationSubBlocks.TestIamPermissions. See the method - description for details. - - Attributes: - parent_resource (str): - Name or id of parent resource of the resource - for this request. - 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_v1beta.types.TestPermissionsRequest): - The body resource for this request - zone (str): - The name of the zone for this request. - """ - - parent_resource: str = proto.Field( - proto.STRING, - number=18091011, - ) - 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. +class TestIamPermissionsServiceAttachmentRequest(proto.Message): + r"""A request message for ServiceAttachments.TestIamPermissions. See the method description for details. Attributes: @@ -156762,105 +158536,13 @@ class TestIamPermissionsResourcePolicyRequest(proto.Message): ) -class TestIamPermissionsRouteRequest(proto.Message): - r"""A request message for Routes.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_v1beta.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 TestIamPermissionsRouterRequest(proto.Message): - r"""A request message for Routers.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_v1beta.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 TestIamPermissionsSecurityPolicyRequest(proto.Message): - r"""A request message for SecurityPolicies.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_v1beta.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 TestIamPermissionsServiceAttachmentRequest(proto.Message): - r"""A request message for ServiceAttachments.TestIamPermissions. - See the method description for details. +class TestIamPermissionsSnapshotGroupRequest(proto.Message): + r"""A request message for SnapshotGroups.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_v1beta.types.TestPermissionsRequest): @@ -156871,10 +158553,6 @@ class TestIamPermissionsServiceAttachmentRequest(proto.Message): proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) resource: str = proto.Field( proto.STRING, number=195806222, @@ -158551,6 +160229,71 @@ class UpdateLicenseRequest(proto.Message): ) +class UpdateNamedSetRouterRequest(proto.Message): + r"""A request message for Routers.UpdateNamedSet. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + named_set_resource (google.cloud.compute_v1beta.types.NamedSet): + 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``. + router (str): + Name of the Router resource where Named Set + is defined. + """ + + named_set_resource: "NamedSet" = proto.Field( + proto.MESSAGE, + number=408608401, + message="NamedSet", + ) + 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 UpdateNetworkInterfaceInstanceRequest(proto.Message): r"""A request message for Instances.UpdateNetworkInterface. See the method description for details. @@ -161633,9 +163376,9 @@ class VmExtensionPolicy(proto.Message): This field is a member of `oneof`_ ``_description``. extension_policies (MutableMapping[str, google.cloud.compute_v1beta.types.VmExtensionPolicyExtensionPolicy]): - Required. A map of extension names (e.g., - "cloudops") to their corresponding policy - configurations. + Required. A map of extension names (for + example, "ops-agent") to their corresponding + policy configurations. global_resource_link (str): Optional. Output only. [Output Only] Link to the global policy that manages this zone policy, if applicable. @@ -161680,7 +163423,7 @@ class VmExtensionPolicy(proto.Message): integers indicate higher priorities. If you do not specify a priority when creating a rule, it is assigned a priority of 1000. If priorities - are equal, the policy with the more recent + are equal, the policy with the most recent creation timestamp takes precedence. This field is a member of `oneof`_ ``_priority``. diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_instance_group_managers_configure_accelerator_topologies_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_instance_group_managers_configure_accelerator_topologies_sync.py new file mode 100644 index 000000000000..d80c3580c3ec --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_instance_group_managers_configure_accelerator_topologies_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ConfigureAcceleratorTopologies +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_InstanceGroupManagers_ConfigureAcceleratorTopologies_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_configure_accelerator_topologies(): + # Create a client + client = compute_v1beta.InstanceGroupManagersClient() + + # Initialize request argument(s) + request = compute_v1beta.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest( + instance_group_manager="instance_group_manager_value", + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.configure_accelerator_topologies(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_InstanceGroupManagers_ConfigureAcceleratorTopologies_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_delete_named_set_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_delete_named_set_sync.py new file mode 100644 index 000000000000..7483485c88fa --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_delete_named_set_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteNamedSet +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_Routers_DeleteNamedSet_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_delete_named_set(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.DeleteNamedSetRouterRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + response = client.delete_named_set(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_Routers_DeleteNamedSet_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_get_named_set_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_get_named_set_sync.py new file mode 100644 index 000000000000..f994249b34b0 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_get_named_set_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetNamedSet +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_Routers_GetNamedSet_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_get_named_set(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.GetNamedSetRouterRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + response = client.get_named_set(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_Routers_GetNamedSet_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_list_named_sets_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_list_named_sets_sync.py new file mode 100644 index 000000000000..bf96dc5c907d --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_list_named_sets_sync.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListNamedSets +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_Routers_ListNamedSets_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_list_named_sets(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.ListNamedSetsRoutersRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + page_result = client.list_named_sets(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END compute_v1beta_generated_Routers_ListNamedSets_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_patch_named_set_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_patch_named_set_sync.py new file mode 100644 index 000000000000..72ffb37a6e61 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_patch_named_set_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for PatchNamedSet +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_Routers_PatchNamedSet_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_patch_named_set(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.PatchNamedSetRouterRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + response = client.patch_named_set(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_Routers_PatchNamedSet_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_update_named_set_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_update_named_set_sync.py new file mode 100644 index 000000000000..6fb5ed2b75e0 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_routers_update_named_set_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateNamedSet +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_Routers_UpdateNamedSet_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_update_named_set(): + # Create a client + client = compute_v1beta.RoutersClient() + + # Initialize request argument(s) + request = compute_v1beta.UpdateNamedSetRouterRequest( + project="project_value", + region="region_value", + router="router_value", + ) + + # Make the request + response = client.update_named_set(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_Routers_UpdateNamedSet_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_delete_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_delete_sync.py new file mode 100644 index 000000000000..b70b0228455a --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_delete_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for Delete +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_SnapshotGroups_Delete_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_delete(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.DeleteSnapshotGroupRequest( + project="project_value", + snapshot_group="snapshot_group_value", + ) + + # Make the request + response = client.delete(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_SnapshotGroups_Delete_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_get_iam_policy_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_get_iam_policy_sync.py new file mode 100644 index 000000000000..9b6292e6aa09 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_get_iam_policy_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetIamPolicy +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_SnapshotGroups_GetIamPolicy_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_get_iam_policy(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.GetIamPolicySnapshotGroupRequest( + project="project_value", + resource="resource_value", + ) + + # Make the request + response = client.get_iam_policy(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_SnapshotGroups_GetIamPolicy_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_get_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_get_sync.py new file mode 100644 index 000000000000..de96432da843 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_get_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for Get +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_SnapshotGroups_Get_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_get(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.GetSnapshotGroupRequest( + project="project_value", + snapshot_group="snapshot_group_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_SnapshotGroups_Get_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_insert_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_insert_sync.py new file mode 100644 index 000000000000..4cd2c9689219 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_insert_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for Insert +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_SnapshotGroups_Insert_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_insert(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.InsertSnapshotGroupRequest( + project="project_value", + ) + + # Make the request + response = client.insert(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_SnapshotGroups_Insert_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_list_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_list_sync.py new file mode 100644 index 000000000000..ba6442ffea01 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_list_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for List +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_SnapshotGroups_List_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_list(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.ListSnapshotGroupsRequest( + project="project_value", + ) + + # Make the request + page_result = client.list(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END compute_v1beta_generated_SnapshotGroups_List_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_set_iam_policy_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_set_iam_policy_sync.py new file mode 100644 index 000000000000..1c6c64b3cd84 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_set_iam_policy_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SetIamPolicy +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_SnapshotGroups_SetIamPolicy_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_set_iam_policy(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.SetIamPolicySnapshotGroupRequest( + project="project_value", + resource="resource_value", + ) + + # Make the request + response = client.set_iam_policy(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_SnapshotGroups_SetIamPolicy_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_test_iam_permissions_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_test_iam_permissions_sync.py new file mode 100644 index 000000000000..281c21e25592 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_snapshot_groups_test_iam_permissions_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for TestIamPermissions +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-compute-v1beta + + +# [START compute_v1beta_generated_SnapshotGroups_TestIamPermissions_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from google.cloud import compute_v1beta + + +def sample_test_iam_permissions(): + # Create a client + client = compute_v1beta.SnapshotGroupsClient() + + # Initialize request argument(s) + request = compute_v1beta.TestIamPermissionsSnapshotGroupRequest( + project="project_value", + resource="resource_value", + ) + + # Make the request + response = client.test_iam_permissions(request=request) + + # Handle the response + print(response) + + +# [END compute_v1beta_generated_SnapshotGroups_TestIamPermissions_sync] diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/snippet_metadata_google.cloud.compute.v1beta.json b/packages/google-cloud-compute-v1beta/samples/generated_samples/snippet_metadata_google.cloud.compute.v1beta.json index 2134824c5237..301fb2056c18 100644 --- a/packages/google-cloud-compute-v1beta/samples/generated_samples/snippet_metadata_google.cloud.compute.v1beta.json +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/snippet_metadata_google.cloud.compute.v1beta.json @@ -17103,6 +17103,98 @@ ], "title": "compute_v1beta_generated_instance_group_managers_apply_updates_to_instances_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.InstanceGroupManagersClient", + "shortName": "InstanceGroupManagersClient" + }, + "fullName": "google.cloud.compute_v1beta.InstanceGroupManagersClient.configure_accelerator_topologies", + "method": { + "fullName": "google.cloud.compute.v1beta.InstanceGroupManagers.ConfigureAcceleratorTopologies", + "service": { + "fullName": "google.cloud.compute.v1beta.InstanceGroupManagers", + "shortName": "InstanceGroupManagers" + }, + "shortName": "ConfigureAcceleratorTopologies" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance_group_manager", + "type": "str" + }, + { + "name": "instance_group_managers_configure_accelerator_topologies_request_resource", + "type": "google.cloud.compute_v1beta.types.InstanceGroupManagersConfigureAcceleratorTopologiesRequest" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "configure_accelerator_topologies" + }, + "description": "Sample for ConfigureAcceleratorTopologies", + "file": "compute_v1beta_generated_instance_group_managers_configure_accelerator_topologies_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_InstanceGroupManagers_ConfigureAcceleratorTopologies_sync", + "segments": [ + { + "end": 53, + "start": 27, + "type": "FULL" + }, + { + "end": 53, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 47, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 50, + "start": 48, + "type": "REQUEST_EXECUTION" + }, + { + "end": 54, + "start": 51, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_instance_group_managers_configure_accelerator_topologies_sync.py" + }, { "canonical": true, "clientMethod": { @@ -72459,6 +72551,94 @@ ], "title": "compute_v1beta_generated_routers_aggregated_list_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.RoutersClient", + "shortName": "RoutersClient" + }, + "fullName": "google.cloud.compute_v1beta.RoutersClient.delete_named_set", + "method": { + "fullName": "google.cloud.compute.v1beta.Routers.DeleteNamedSet", + "service": { + "fullName": "google.cloud.compute.v1beta.Routers", + "shortName": "Routers" + }, + "shortName": "DeleteNamedSet" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.DeleteNamedSetRouterRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "router", + "type": "str" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete_named_set" + }, + "description": "Sample for DeleteNamedSet", + "file": "compute_v1beta_generated_routers_delete_named_set_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_Routers_DeleteNamedSet_sync", + "segments": [ + { + "end": 53, + "start": 27, + "type": "FULL" + }, + { + "end": 53, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 47, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 50, + "start": 48, + "type": "REQUEST_EXECUTION" + }, + { + "end": 54, + "start": 51, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_routers_delete_named_set_sync.py" + }, { "canonical": true, "clientMethod": { @@ -72642,19 +72822,19 @@ "fullName": "google.cloud.compute_v1beta.RoutersClient", "shortName": "RoutersClient" }, - "fullName": "google.cloud.compute_v1beta.RoutersClient.get_nat_ip_info", + "fullName": "google.cloud.compute_v1beta.RoutersClient.get_named_set", "method": { - "fullName": "google.cloud.compute.v1beta.Routers.GetNatIpInfo", + "fullName": "google.cloud.compute.v1beta.Routers.GetNamedSet", "service": { "fullName": "google.cloud.compute.v1beta.Routers", "shortName": "Routers" }, - "shortName": "GetNatIpInfo" + "shortName": "GetNamedSet" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.GetNatIpInfoRouterRequest" + "type": "google.cloud.compute_v1beta.types.GetNamedSetRouterRequest" }, { "name": "project", @@ -72681,14 +72861,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.types.NatIpInfoResponse", - "shortName": "get_nat_ip_info" + "resultType": "google.cloud.compute_v1beta.types.RoutersGetNamedSetResponse", + "shortName": "get_named_set" }, - "description": "Sample for GetNatIpInfo", - "file": "compute_v1beta_generated_routers_get_nat_ip_info_sync.py", + "description": "Sample for GetNamedSet", + "file": "compute_v1beta_generated_routers_get_named_set_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_Routers_GetNatIpInfo_sync", + "regionTag": "compute_v1beta_generated_Routers_GetNamedSet_sync", "segments": [ { "end": 53, @@ -72721,7 +72901,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_routers_get_nat_ip_info_sync.py" + "title": "compute_v1beta_generated_routers_get_named_set_sync.py" }, { "canonical": true, @@ -72730,19 +72910,19 @@ "fullName": "google.cloud.compute_v1beta.RoutersClient", "shortName": "RoutersClient" }, - "fullName": "google.cloud.compute_v1beta.RoutersClient.get_nat_mapping_info", + "fullName": "google.cloud.compute_v1beta.RoutersClient.get_nat_ip_info", "method": { - "fullName": "google.cloud.compute.v1beta.Routers.GetNatMappingInfo", + "fullName": "google.cloud.compute.v1beta.Routers.GetNatIpInfo", "service": { "fullName": "google.cloud.compute.v1beta.Routers", "shortName": "Routers" }, - "shortName": "GetNatMappingInfo" + "shortName": "GetNatIpInfo" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.GetNatMappingInfoRoutersRequest" + "type": "google.cloud.compute_v1beta.types.GetNatIpInfoRouterRequest" }, { "name": "project", @@ -72769,22 +72949,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.services.routers.pagers.GetNatMappingInfoPager", - "shortName": "get_nat_mapping_info" + "resultType": "google.cloud.compute_v1beta.types.NatIpInfoResponse", + "shortName": "get_nat_ip_info" }, - "description": "Sample for GetNatMappingInfo", - "file": "compute_v1beta_generated_routers_get_nat_mapping_info_sync.py", + "description": "Sample for GetNatIpInfo", + "file": "compute_v1beta_generated_routers_get_nat_ip_info_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_Routers_GetNatMappingInfo_sync", + "regionTag": "compute_v1beta_generated_Routers_GetNatIpInfo_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -72804,12 +72984,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 55, + "end": 54, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_routers_get_nat_mapping_info_sync.py" + "title": "compute_v1beta_generated_routers_get_nat_ip_info_sync.py" }, { "canonical": true, @@ -72818,19 +72998,19 @@ "fullName": "google.cloud.compute_v1beta.RoutersClient", "shortName": "RoutersClient" }, - "fullName": "google.cloud.compute_v1beta.RoutersClient.get_route_policy", + "fullName": "google.cloud.compute_v1beta.RoutersClient.get_nat_mapping_info", "method": { - "fullName": "google.cloud.compute.v1beta.Routers.GetRoutePolicy", + "fullName": "google.cloud.compute.v1beta.Routers.GetNatMappingInfo", "service": { "fullName": "google.cloud.compute.v1beta.Routers", "shortName": "Routers" }, - "shortName": "GetRoutePolicy" + "shortName": "GetNatMappingInfo" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.GetRoutePolicyRouterRequest" + "type": "google.cloud.compute_v1beta.types.GetNatMappingInfoRoutersRequest" }, { "name": "project", @@ -72857,22 +73037,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.types.RoutersGetRoutePolicyResponse", - "shortName": "get_route_policy" + "resultType": "google.cloud.compute_v1beta.services.routers.pagers.GetNatMappingInfoPager", + "shortName": "get_nat_mapping_info" }, - "description": "Sample for GetRoutePolicy", - "file": "compute_v1beta_generated_routers_get_route_policy_sync.py", + "description": "Sample for GetNatMappingInfo", + "file": "compute_v1beta_generated_routers_get_nat_mapping_info_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_Routers_GetRoutePolicy_sync", + "regionTag": "compute_v1beta_generated_Routers_GetNatMappingInfo_sync", "segments": [ { - "end": 53, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 54, "start": 27, "type": "SHORT" }, @@ -72892,12 +73072,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 55, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_routers_get_route_policy_sync.py" + "title": "compute_v1beta_generated_routers_get_nat_mapping_info_sync.py" }, { "canonical": true, @@ -72906,19 +73086,19 @@ "fullName": "google.cloud.compute_v1beta.RoutersClient", "shortName": "RoutersClient" }, - "fullName": "google.cloud.compute_v1beta.RoutersClient.get_router_status", + "fullName": "google.cloud.compute_v1beta.RoutersClient.get_route_policy", "method": { - "fullName": "google.cloud.compute.v1beta.Routers.GetRouterStatus", + "fullName": "google.cloud.compute.v1beta.Routers.GetRoutePolicy", "service": { "fullName": "google.cloud.compute.v1beta.Routers", "shortName": "Routers" }, - "shortName": "GetRouterStatus" + "shortName": "GetRoutePolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.GetRouterStatusRouterRequest" + "type": "google.cloud.compute_v1beta.types.GetRoutePolicyRouterRequest" }, { "name": "project", @@ -72945,14 +73125,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.types.RouterStatusResponse", - "shortName": "get_router_status" + "resultType": "google.cloud.compute_v1beta.types.RoutersGetRoutePolicyResponse", + "shortName": "get_route_policy" }, - "description": "Sample for GetRouterStatus", - "file": "compute_v1beta_generated_routers_get_router_status_sync.py", + "description": "Sample for GetRoutePolicy", + "file": "compute_v1beta_generated_routers_get_route_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_Routers_GetRouterStatus_sync", + "regionTag": "compute_v1beta_generated_Routers_GetRoutePolicy_sync", "segments": [ { "end": 53, @@ -72985,7 +73165,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_routers_get_router_status_sync.py" + "title": "compute_v1beta_generated_routers_get_route_policy_sync.py" }, { "canonical": true, @@ -72994,19 +73174,19 @@ "fullName": "google.cloud.compute_v1beta.RoutersClient", "shortName": "RoutersClient" }, - "fullName": "google.cloud.compute_v1beta.RoutersClient.get", + "fullName": "google.cloud.compute_v1beta.RoutersClient.get_router_status", "method": { - "fullName": "google.cloud.compute.v1beta.Routers.Get", + "fullName": "google.cloud.compute.v1beta.Routers.GetRouterStatus", "service": { "fullName": "google.cloud.compute.v1beta.Routers", "shortName": "Routers" }, - "shortName": "Get" + "shortName": "GetRouterStatus" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.GetRouterRequest" + "type": "google.cloud.compute_v1beta.types.GetRouterStatusRouterRequest" }, { "name": "project", @@ -73033,14 +73213,102 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.types.Router", - "shortName": "get" + "resultType": "google.cloud.compute_v1beta.types.RouterStatusResponse", + "shortName": "get_router_status" }, - "description": "Sample for Get", - "file": "compute_v1beta_generated_routers_get_sync.py", + "description": "Sample for GetRouterStatus", + "file": "compute_v1beta_generated_routers_get_router_status_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_Routers_Get_sync", + "regionTag": "compute_v1beta_generated_Routers_GetRouterStatus_sync", + "segments": [ + { + "end": 53, + "start": 27, + "type": "FULL" + }, + { + "end": 53, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 47, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 50, + "start": 48, + "type": "REQUEST_EXECUTION" + }, + { + "end": 54, + "start": 51, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_routers_get_router_status_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.RoutersClient", + "shortName": "RoutersClient" + }, + "fullName": "google.cloud.compute_v1beta.RoutersClient.get", + "method": { + "fullName": "google.cloud.compute.v1beta.Routers.Get", + "service": { + "fullName": "google.cloud.compute.v1beta.Routers", + "shortName": "Routers" + }, + "shortName": "Get" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.GetRouterRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "router", + "type": "str" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.cloud.compute_v1beta.types.Router", + "shortName": "get" + }, + "description": "Sample for Get", + "file": "compute_v1beta_generated_routers_get_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_Routers_Get_sync", "segments": [ { "end": 53, @@ -73251,6 +73519,94 @@ ], "title": "compute_v1beta_generated_routers_list_bgp_routes_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.RoutersClient", + "shortName": "RoutersClient" + }, + "fullName": "google.cloud.compute_v1beta.RoutersClient.list_named_sets", + "method": { + "fullName": "google.cloud.compute.v1beta.Routers.ListNamedSets", + "service": { + "fullName": "google.cloud.compute.v1beta.Routers", + "shortName": "Routers" + }, + "shortName": "ListNamedSets" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.ListNamedSetsRoutersRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "router", + "type": "str" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.cloud.compute_v1beta.services.routers.pagers.ListNamedSetsPager", + "shortName": "list_named_sets" + }, + "description": "Sample for ListNamedSets", + "file": "compute_v1beta_generated_routers_list_named_sets_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_Routers_ListNamedSets_sync", + "segments": [ + { + "end": 54, + "start": 27, + "type": "FULL" + }, + { + "end": 54, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 47, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 50, + "start": 48, + "type": "REQUEST_EXECUTION" + }, + { + "end": 55, + "start": 51, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_routers_list_named_sets_sync.py" + }, { "canonical": true, "clientMethod": { @@ -73423,6 +73779,98 @@ ], "title": "compute_v1beta_generated_routers_list_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.RoutersClient", + "shortName": "RoutersClient" + }, + "fullName": "google.cloud.compute_v1beta.RoutersClient.patch_named_set", + "method": { + "fullName": "google.cloud.compute.v1beta.Routers.PatchNamedSet", + "service": { + "fullName": "google.cloud.compute.v1beta.Routers", + "shortName": "Routers" + }, + "shortName": "PatchNamedSet" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.PatchNamedSetRouterRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "router", + "type": "str" + }, + { + "name": "named_set_resource", + "type": "google.cloud.compute_v1beta.types.NamedSet" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "patch_named_set" + }, + "description": "Sample for PatchNamedSet", + "file": "compute_v1beta_generated_routers_patch_named_set_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_Routers_PatchNamedSet_sync", + "segments": [ + { + "end": 53, + "start": 27, + "type": "FULL" + }, + { + "end": 53, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 47, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 50, + "start": 48, + "type": "REQUEST_EXECUTION" + }, + { + "end": 54, + "start": 51, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_routers_patch_named_set_sync.py" + }, { "canonical": true, "clientMethod": { @@ -73798,19 +74246,19 @@ "fullName": "google.cloud.compute_v1beta.RoutersClient", "shortName": "RoutersClient" }, - "fullName": "google.cloud.compute_v1beta.RoutersClient.update_route_policy", + "fullName": "google.cloud.compute_v1beta.RoutersClient.update_named_set", "method": { - "fullName": "google.cloud.compute.v1beta.Routers.UpdateRoutePolicy", + "fullName": "google.cloud.compute.v1beta.Routers.UpdateNamedSet", "service": { "fullName": "google.cloud.compute.v1beta.Routers", "shortName": "Routers" }, - "shortName": "UpdateRoutePolicy" + "shortName": "UpdateNamedSet" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.UpdateRoutePolicyRouterRequest" + "type": "google.cloud.compute_v1beta.types.UpdateNamedSetRouterRequest" }, { "name": "project", @@ -73825,8 +74273,8 @@ "type": "str" }, { - "name": "route_policy_resource", - "type": "google.cloud.compute_v1beta.types.RoutePolicy" + "name": "named_set_resource", + "type": "google.cloud.compute_v1beta.types.NamedSet" }, { "name": "retry", @@ -73842,13 +74290,105 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "update_route_policy" + "shortName": "update_named_set" }, - "description": "Sample for UpdateRoutePolicy", - "file": "compute_v1beta_generated_routers_update_route_policy_sync.py", + "description": "Sample for UpdateNamedSet", + "file": "compute_v1beta_generated_routers_update_named_set_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_Routers_UpdateRoutePolicy_sync", + "regionTag": "compute_v1beta_generated_Routers_UpdateNamedSet_sync", + "segments": [ + { + "end": 53, + "start": 27, + "type": "FULL" + }, + { + "end": 53, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 47, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 50, + "start": 48, + "type": "REQUEST_EXECUTION" + }, + { + "end": 54, + "start": 51, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_routers_update_named_set_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.RoutersClient", + "shortName": "RoutersClient" + }, + "fullName": "google.cloud.compute_v1beta.RoutersClient.update_route_policy", + "method": { + "fullName": "google.cloud.compute.v1beta.Routers.UpdateRoutePolicy", + "service": { + "fullName": "google.cloud.compute.v1beta.Routers", + "shortName": "Routers" + }, + "shortName": "UpdateRoutePolicy" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.UpdateRoutePolicyRouterRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "router", + "type": "str" + }, + { + "name": "route_policy_resource", + "type": "google.cloud.compute_v1beta.types.RoutePolicy" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "update_route_policy" + }, + "description": "Sample for UpdateRoutePolicy", + "file": "compute_v1beta_generated_routers_update_route_policy_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_Routers_UpdateRoutePolicy_sync", "segments": [ { "end": 53, @@ -75057,40 +75597,556 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_security_policies_list_sync.py" + "title": "compute_v1beta_generated_security_policies_list_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", + "shortName": "SecurityPoliciesClient" + }, + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.patch_rule", + "method": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies.PatchRule", + "service": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies", + "shortName": "SecurityPolicies" + }, + "shortName": "PatchRule" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.PatchRuleSecurityPolicyRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "security_policy", + "type": "str" + }, + { + "name": "security_policy_rule_resource", + "type": "google.cloud.compute_v1beta.types.SecurityPolicyRule" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "patch_rule" + }, + "description": "Sample for PatchRule", + "file": "compute_v1beta_generated_security_policies_patch_rule_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_SecurityPolicies_PatchRule_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 46, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 47, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_security_policies_patch_rule_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", + "shortName": "SecurityPoliciesClient" + }, + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.patch", + "method": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies.Patch", + "service": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies", + "shortName": "SecurityPolicies" + }, + "shortName": "Patch" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.PatchSecurityPolicyRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "security_policy", + "type": "str" + }, + { + "name": "security_policy_resource", + "type": "google.cloud.compute_v1beta.types.SecurityPolicy" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "patch" + }, + "description": "Sample for Patch", + "file": "compute_v1beta_generated_security_policies_patch_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_SecurityPolicies_Patch_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 46, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 47, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_security_policies_patch_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", + "shortName": "SecurityPoliciesClient" + }, + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.remove_rule", + "method": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies.RemoveRule", + "service": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies", + "shortName": "SecurityPolicies" + }, + "shortName": "RemoveRule" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.RemoveRuleSecurityPolicyRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "security_policy", + "type": "str" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "remove_rule" + }, + "description": "Sample for RemoveRule", + "file": "compute_v1beta_generated_security_policies_remove_rule_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_SecurityPolicies_RemoveRule_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 46, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 47, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_security_policies_remove_rule_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", + "shortName": "SecurityPoliciesClient" + }, + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.set_labels", + "method": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies.SetLabels", + "service": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies", + "shortName": "SecurityPolicies" + }, + "shortName": "SetLabels" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.SetLabelsSecurityPolicyRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "resource", + "type": "str" + }, + { + "name": "global_set_labels_request_resource", + "type": "google.cloud.compute_v1beta.types.GlobalSetLabelsRequest" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_labels" + }, + "description": "Sample for SetLabels", + "file": "compute_v1beta_generated_security_policies_set_labels_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_SecurityPolicies_SetLabels_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 46, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 47, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_security_policies_set_labels_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", + "shortName": "SecurityPoliciesClient" + }, + "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.test_iam_permissions", + "method": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies.TestIamPermissions", + "service": { + "fullName": "google.cloud.compute.v1beta.SecurityPolicies", + "shortName": "SecurityPolicies" + }, + "shortName": "TestIamPermissions" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.TestIamPermissionsSecurityPolicyRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "resource", + "type": "str" + }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1beta.types.TestPermissionsRequest" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.cloud.compute_v1beta.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" + }, + "description": "Sample for TestIamPermissions", + "file": "compute_v1beta_generated_security_policies_test_iam_permissions_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_SecurityPolicies_TestIamPermissions_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 46, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 47, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_security_policies_test_iam_permissions_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", + "shortName": "ServiceAttachmentsClient" + }, + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.aggregated_list", + "method": { + "fullName": "google.cloud.compute.v1beta.ServiceAttachments.AggregatedList", + "service": { + "fullName": "google.cloud.compute.v1beta.ServiceAttachments", + "shortName": "ServiceAttachments" + }, + "shortName": "AggregatedList" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.AggregatedListServiceAttachmentsRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.cloud.compute_v1beta.services.service_attachments.pagers.AggregatedListPager", + "shortName": "aggregated_list" + }, + "description": "Sample for AggregatedList", + "file": "compute_v1beta_generated_service_attachments_aggregated_list_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_ServiceAttachments_AggregatedList_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 48, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 49, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_service_attachments_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", - "shortName": "SecurityPoliciesClient" + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", + "shortName": "ServiceAttachmentsClient" }, - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.patch_rule", + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.delete", "method": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies.PatchRule", + "fullName": "google.cloud.compute.v1beta.ServiceAttachments.Delete", "service": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies", - "shortName": "SecurityPolicies" + "fullName": "google.cloud.compute.v1beta.ServiceAttachments", + "shortName": "ServiceAttachments" }, - "shortName": "PatchRule" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.PatchRuleSecurityPolicyRequest" + "type": "google.cloud.compute_v1beta.types.DeleteServiceAttachmentRequest" }, { "name": "project", "type": "str" }, { - "name": "security_policy", + "name": "region", "type": "str" }, { - "name": "security_policy_rule_resource", - "type": "google.cloud.compute_v1beta.types.SecurityPolicyRule" + "name": "service_attachment", + "type": "str" }, { "name": "retry", @@ -75106,21 +76162,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch_rule" + "shortName": "delete" }, - "description": "Sample for PatchRule", - "file": "compute_v1beta_generated_security_policies_patch_rule_sync.py", + "description": "Sample for Delete", + "file": "compute_v1beta_generated_service_attachments_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_SecurityPolicies_PatchRule_sync", + "regionTag": "compute_v1beta_generated_ServiceAttachments_Delete_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -75130,55 +76186,55 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 50, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_security_policies_patch_rule_sync.py" + "title": "compute_v1beta_generated_service_attachments_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", - "shortName": "SecurityPoliciesClient" + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", + "shortName": "ServiceAttachmentsClient" }, - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.patch", + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies.Patch", + "fullName": "google.cloud.compute.v1beta.ServiceAttachments.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies", - "shortName": "SecurityPolicies" + "fullName": "google.cloud.compute.v1beta.ServiceAttachments", + "shortName": "ServiceAttachments" }, - "shortName": "Patch" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.PatchSecurityPolicyRequest" + "type": "google.cloud.compute_v1beta.types.GetIamPolicyServiceAttachmentRequest" }, { "name": "project", "type": "str" }, { - "name": "security_policy", + "name": "region", "type": "str" }, { - "name": "security_policy_resource", - "type": "google.cloud.compute_v1beta.types.SecurityPolicy" + "name": "resource", + "type": "str" }, { "name": "retry", @@ -75193,22 +76249,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "resultType": "google.cloud.compute_v1beta.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for Patch", - "file": "compute_v1beta_generated_security_policies_patch_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1beta_generated_service_attachments_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_SecurityPolicies_Patch_sync", + "regionTag": "compute_v1beta_generated_ServiceAttachments_GetIamPolicy_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -75218,50 +76274,54 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 50, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_security_policies_patch_sync.py" + "title": "compute_v1beta_generated_service_attachments_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", - "shortName": "SecurityPoliciesClient" + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", + "shortName": "ServiceAttachmentsClient" }, - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.remove_rule", + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.get", "method": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies.RemoveRule", + "fullName": "google.cloud.compute.v1beta.ServiceAttachments.Get", "service": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies", - "shortName": "SecurityPolicies" + "fullName": "google.cloud.compute.v1beta.ServiceAttachments", + "shortName": "ServiceAttachments" }, - "shortName": "RemoveRule" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.RemoveRuleSecurityPolicyRequest" + "type": "google.cloud.compute_v1beta.types.GetServiceAttachmentRequest" }, { "name": "project", "type": "str" }, { - "name": "security_policy", + "name": "region", + "type": "str" + }, + { + "name": "service_attachment", "type": "str" }, { @@ -75277,22 +76337,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "remove_rule" + "resultType": "google.cloud.compute_v1beta.types.ServiceAttachment", + "shortName": "get" }, - "description": "Sample for RemoveRule", - "file": "compute_v1beta_generated_security_policies_remove_rule_sync.py", + "description": "Sample for Get", + "file": "compute_v1beta_generated_service_attachments_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_SecurityPolicies_RemoveRule_sync", + "regionTag": "compute_v1beta_generated_ServiceAttachments_Get_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -75302,55 +76362,55 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 50, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_security_policies_remove_rule_sync.py" + "title": "compute_v1beta_generated_service_attachments_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", - "shortName": "SecurityPoliciesClient" + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", + "shortName": "ServiceAttachmentsClient" }, - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.set_labels", + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.insert", "method": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies.SetLabels", + "fullName": "google.cloud.compute.v1beta.ServiceAttachments.Insert", "service": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies", - "shortName": "SecurityPolicies" + "fullName": "google.cloud.compute.v1beta.ServiceAttachments", + "shortName": "ServiceAttachments" }, - "shortName": "SetLabels" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.SetLabelsSecurityPolicyRequest" + "type": "google.cloud.compute_v1beta.types.InsertServiceAttachmentRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "region", "type": "str" }, { - "name": "global_set_labels_request_resource", - "type": "google.cloud.compute_v1beta.types.GlobalSetLabelsRequest" + "name": "service_attachment_resource", + "type": "google.cloud.compute_v1beta.types.ServiceAttachment" }, { "name": "retry", @@ -75366,13 +76426,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_labels" + "shortName": "insert" }, - "description": "Sample for SetLabels", - "file": "compute_v1beta_generated_security_policies_set_labels_sync.py", + "description": "Sample for Insert", + "file": "compute_v1beta_generated_service_attachments_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_SecurityPolicies_SetLabels_sync", + "regionTag": "compute_v1beta_generated_ServiceAttachments_Insert_sync", "segments": [ { "end": 52, @@ -75405,41 +76465,37 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_security_policies_set_labels_sync.py" + "title": "compute_v1beta_generated_service_attachments_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient", - "shortName": "SecurityPoliciesClient" + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", + "shortName": "ServiceAttachmentsClient" }, - "fullName": "google.cloud.compute_v1beta.SecurityPoliciesClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.list", "method": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies.TestIamPermissions", + "fullName": "google.cloud.compute.v1beta.ServiceAttachments.List", "service": { - "fullName": "google.cloud.compute.v1beta.SecurityPolicies", - "shortName": "SecurityPolicies" + "fullName": "google.cloud.compute.v1beta.ServiceAttachments", + "shortName": "ServiceAttachments" }, - "shortName": "TestIamPermissions" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.TestIamPermissionsSecurityPolicyRequest" + "type": "google.cloud.compute_v1beta.types.ListServiceAttachmentsRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "region", "type": "str" }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1beta.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -75453,22 +76509,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.cloud.compute_v1beta.services.service_attachments.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1beta_generated_security_policies_test_iam_permissions_sync.py", + "description": "Sample for List", + "file": "compute_v1beta_generated_service_attachments_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_SecurityPolicies_TestIamPermissions_sync", + "regionTag": "compute_v1beta_generated_ServiceAttachments_List_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -75488,12 +76544,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 53, + "end": 54, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_security_policies_test_iam_permissions_sync.py" + "title": "compute_v1beta_generated_service_attachments_list_sync.py" }, { "canonical": true, @@ -75502,24 +76558,36 @@ "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", "shortName": "ServiceAttachmentsClient" }, - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.aggregated_list", + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.patch", "method": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments.AggregatedList", + "fullName": "google.cloud.compute.v1beta.ServiceAttachments.Patch", "service": { "fullName": "google.cloud.compute.v1beta.ServiceAttachments", "shortName": "ServiceAttachments" }, - "shortName": "AggregatedList" + "shortName": "Patch" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.AggregatedListServiceAttachmentsRequest" + "type": "google.cloud.compute_v1beta.types.PatchServiceAttachmentRequest" }, { "name": "project", "type": "str" }, + { + "name": "region", + "type": "str" + }, + { + "name": "service_attachment", + "type": "str" + }, + { + "name": "service_attachment_resource", + "type": "google.cloud.compute_v1beta.types.ServiceAttachment" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -75533,22 +76601,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.services.service_attachments.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "patch" }, - "description": "Sample for AggregatedList", - "file": "compute_v1beta_generated_service_attachments_aggregated_list_sync.py", + "description": "Sample for Patch", + "file": "compute_v1beta_generated_service_attachments_patch_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_ServiceAttachments_AggregatedList_sync", + "regionTag": "compute_v1beta_generated_ServiceAttachments_Patch_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -75558,22 +76626,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 49, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_service_attachments_aggregated_list_sync.py" + "title": "compute_v1beta_generated_service_attachments_patch_sync.py" }, { "canonical": true, @@ -75582,19 +76650,19 @@ "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", "shortName": "ServiceAttachmentsClient" }, - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.delete", + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments.Delete", + "fullName": "google.cloud.compute.v1beta.ServiceAttachments.SetIamPolicy", "service": { "fullName": "google.cloud.compute.v1beta.ServiceAttachments", "shortName": "ServiceAttachments" }, - "shortName": "Delete" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.DeleteServiceAttachmentRequest" + "type": "google.cloud.compute_v1beta.types.SetIamPolicyServiceAttachmentRequest" }, { "name": "project", @@ -75605,9 +76673,13 @@ "type": "str" }, { - "name": "service_attachment", + "name": "resource", "type": "str" }, + { + "name": "region_set_policy_request_resource", + "type": "google.cloud.compute_v1beta.types.RegionSetPolicyRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -75621,14 +76693,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1beta.types.Policy", + "shortName": "set_iam_policy" }, - "description": "Sample for Delete", - "file": "compute_v1beta_generated_service_attachments_delete_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1beta_generated_service_attachments_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_ServiceAttachments_Delete_sync", + "regionTag": "compute_v1beta_generated_ServiceAttachments_SetIamPolicy_sync", "segments": [ { "end": 53, @@ -75661,7 +76733,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_service_attachments_delete_sync.py" + "title": "compute_v1beta_generated_service_attachments_set_iam_policy_sync.py" }, { "canonical": true, @@ -75670,19 +76742,19 @@ "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", "shortName": "ServiceAttachmentsClient" }, - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.get_iam_policy", + "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments.GetIamPolicy", + "fullName": "google.cloud.compute.v1beta.ServiceAttachments.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1beta.ServiceAttachments", "shortName": "ServiceAttachments" }, - "shortName": "GetIamPolicy" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.GetIamPolicyServiceAttachmentRequest" + "type": "google.cloud.compute_v1beta.types.TestIamPermissionsServiceAttachmentRequest" }, { "name": "project", @@ -75696,6 +76768,10 @@ "name": "resource", "type": "str" }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1beta.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -75709,14 +76785,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.types.Policy", - "shortName": "get_iam_policy" + "resultType": "google.cloud.compute_v1beta.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1beta_generated_service_attachments_get_iam_policy_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1beta_generated_service_attachments_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_ServiceAttachments_GetIamPolicy_sync", + "regionTag": "compute_v1beta_generated_ServiceAttachments_TestIamPermissions_sync", "segments": [ { "end": 53, @@ -75749,39 +76825,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_service_attachments_get_iam_policy_sync.py" + "title": "compute_v1beta_generated_service_attachments_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", - "shortName": "ServiceAttachmentsClient" + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient", + "shortName": "SnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.get", + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient.delete", "method": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments.Get", + "fullName": "google.cloud.compute.v1beta.SnapshotGroups.Delete", "service": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments", - "shortName": "ServiceAttachments" + "fullName": "google.cloud.compute.v1beta.SnapshotGroups", + "shortName": "SnapshotGroups" }, - "shortName": "Get" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.GetServiceAttachmentRequest" + "type": "google.cloud.compute_v1beta.types.DeleteSnapshotGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", - "type": "str" - }, - { - "name": "service_attachment", + "name": "snapshot_group", "type": "str" }, { @@ -75797,22 +76869,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.types.ServiceAttachment", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for Get", - "file": "compute_v1beta_generated_service_attachments_get_sync.py", + "description": "Sample for Delete", + "file": "compute_v1beta_generated_snapshot_groups_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_ServiceAttachments_Get_sync", + "regionTag": "compute_v1beta_generated_SnapshotGroups_Delete_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -75822,56 +76894,52 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 54, - "start": 51, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_service_attachments_get_sync.py" + "title": "compute_v1beta_generated_snapshot_groups_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", - "shortName": "ServiceAttachmentsClient" + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient", + "shortName": "SnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.insert", + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments.Insert", + "fullName": "google.cloud.compute.v1beta.SnapshotGroups.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments", - "shortName": "ServiceAttachments" + "fullName": "google.cloud.compute.v1beta.SnapshotGroups", + "shortName": "SnapshotGroups" }, - "shortName": "Insert" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.InsertServiceAttachmentRequest" + "type": "google.cloud.compute_v1beta.types.GetIamPolicySnapshotGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", + "name": "resource", "type": "str" }, - { - "name": "service_attachment_resource", - "type": "google.cloud.compute_v1beta.types.ServiceAttachment" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -75885,14 +76953,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1beta.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for Insert", - "file": "compute_v1beta_generated_service_attachments_insert_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1beta_generated_snapshot_groups_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_ServiceAttachments_Insert_sync", + "regionTag": "compute_v1beta_generated_SnapshotGroups_GetIamPolicy_sync", "segments": [ { "end": 52, @@ -75925,35 +76993,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_service_attachments_insert_sync.py" + "title": "compute_v1beta_generated_snapshot_groups_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", - "shortName": "ServiceAttachmentsClient" + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient", + "shortName": "SnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.list", + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient.get", "method": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments.List", + "fullName": "google.cloud.compute.v1beta.SnapshotGroups.Get", "service": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments", - "shortName": "ServiceAttachments" + "fullName": "google.cloud.compute.v1beta.SnapshotGroups", + "shortName": "SnapshotGroups" }, - "shortName": "List" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.ListServiceAttachmentsRequest" + "type": "google.cloud.compute_v1beta.types.GetSnapshotGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", + "name": "snapshot_group", "type": "str" }, { @@ -75969,22 +77037,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1beta.services.service_attachments.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1beta.types.SnapshotGroup", + "shortName": "get" }, - "description": "Sample for List", - "file": "compute_v1beta_generated_service_attachments_list_sync.py", + "description": "Sample for Get", + "file": "compute_v1beta_generated_snapshot_groups_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_ServiceAttachments_List_sync", + "regionTag": "compute_v1beta_generated_SnapshotGroups_Get_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -76004,49 +77072,121 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 53, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_service_attachments_list_sync.py" + "title": "compute_v1beta_generated_snapshot_groups_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", - "shortName": "ServiceAttachmentsClient" + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient", + "shortName": "SnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.patch", + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient.insert", "method": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments.Patch", + "fullName": "google.cloud.compute.v1beta.SnapshotGroups.Insert", "service": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments", - "shortName": "ServiceAttachments" + "fullName": "google.cloud.compute.v1beta.SnapshotGroups", + "shortName": "SnapshotGroups" }, - "shortName": "Patch" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.PatchServiceAttachmentRequest" + "type": "google.cloud.compute_v1beta.types.InsertSnapshotGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", - "type": "str" + "name": "snapshot_group_resource", + "type": "google.cloud.compute_v1beta.types.SnapshotGroup" }, { - "name": "service_attachment", - "type": "str" + "name": "retry", + "type": "google.api_core.retry.Retry" }, { - "name": "service_attachment_resource", - "type": "google.cloud.compute_v1beta.types.ServiceAttachment" + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" + }, + "description": "Sample for Insert", + "file": "compute_v1beta_generated_snapshot_groups_insert_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_SnapshotGroups_Insert_sync", + "segments": [ + { + "end": 51, + "start": 27, + "type": "FULL" + }, + { + "end": 51, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 48, + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 52, + "start": 49, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_snapshot_groups_insert_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient", + "shortName": "SnapshotGroupsClient" + }, + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient.list", + "method": { + "fullName": "google.cloud.compute.v1beta.SnapshotGroups.List", + "service": { + "fullName": "google.cloud.compute.v1beta.SnapshotGroups", + "shortName": "SnapshotGroups" + }, + "shortName": "List" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.ListSnapshotGroupsRequest" + }, + { + "name": "project", + "type": "str" }, { "name": "retry", @@ -76061,22 +77201,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "resultType": "google.cloud.compute_v1beta.services.snapshot_groups.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Patch", - "file": "compute_v1beta_generated_service_attachments_patch_sync.py", + "description": "Sample for List", + "file": "compute_v1beta_generated_snapshot_groups_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_ServiceAttachments_Patch_sync", + "regionTag": "compute_v1beta_generated_SnapshotGroups_List_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -76086,59 +77226,55 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 54, - "start": 51, + "end": 53, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_service_attachments_patch_sync.py" + "title": "compute_v1beta_generated_snapshot_groups_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", - "shortName": "ServiceAttachmentsClient" + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient", + "shortName": "SnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.set_iam_policy", + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments.SetIamPolicy", + "fullName": "google.cloud.compute.v1beta.SnapshotGroups.SetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments", - "shortName": "ServiceAttachments" + "fullName": "google.cloud.compute.v1beta.SnapshotGroups", + "shortName": "SnapshotGroups" }, "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.SetIamPolicyServiceAttachmentRequest" + "type": "google.cloud.compute_v1beta.types.SetIamPolicySnapshotGroupRequest" }, { "name": "project", "type": "str" }, - { - "name": "region", - "type": "str" - }, { "name": "resource", "type": "str" }, { - "name": "region_set_policy_request_resource", - "type": "google.cloud.compute_v1beta.types.RegionSetPolicyRequest" + "name": "global_set_policy_request_resource", + "type": "google.cloud.compute_v1beta.types.GlobalSetPolicyRequest" }, { "name": "retry", @@ -76157,18 +77293,18 @@ "shortName": "set_iam_policy" }, "description": "Sample for SetIamPolicy", - "file": "compute_v1beta_generated_service_attachments_set_iam_policy_sync.py", + "file": "compute_v1beta_generated_snapshot_groups_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_ServiceAttachments_SetIamPolicy_sync", + "regionTag": "compute_v1beta_generated_SnapshotGroups_SetIamPolicy_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -76178,52 +77314,48 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 54, - "start": 51, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_service_attachments_set_iam_policy_sync.py" + "title": "compute_v1beta_generated_snapshot_groups_set_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient", - "shortName": "ServiceAttachmentsClient" + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient", + "shortName": "SnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1beta.ServiceAttachmentsClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1beta.SnapshotGroupsClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments.TestIamPermissions", + "fullName": "google.cloud.compute.v1beta.SnapshotGroups.TestIamPermissions", "service": { - "fullName": "google.cloud.compute.v1beta.ServiceAttachments", - "shortName": "ServiceAttachments" + "fullName": "google.cloud.compute.v1beta.SnapshotGroups", + "shortName": "SnapshotGroups" }, "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1beta.types.TestIamPermissionsServiceAttachmentRequest" + "type": "google.cloud.compute_v1beta.types.TestIamPermissionsSnapshotGroupRequest" }, { "name": "project", "type": "str" }, - { - "name": "region", - "type": "str" - }, { "name": "resource", "type": "str" @@ -76249,18 +77381,18 @@ "shortName": "test_iam_permissions" }, "description": "Sample for TestIamPermissions", - "file": "compute_v1beta_generated_service_attachments_test_iam_permissions_sync.py", + "file": "compute_v1beta_generated_snapshot_groups_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1beta_generated_ServiceAttachments_TestIamPermissions_sync", + "regionTag": "compute_v1beta_generated_SnapshotGroups_TestIamPermissions_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -76270,22 +77402,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 54, - "start": 51, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1beta_generated_service_attachments_test_iam_permissions_sync.py" + "title": "compute_v1beta_generated_snapshot_groups_test_iam_permissions_sync.py" }, { "canonical": true, diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_backend_services.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_backend_services.py index 5b305c073129..804d7561bbb4 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_backend_services.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_backend_services.py @@ -7994,6 +7994,7 @@ def test_insert_rest_call_success(request_type): "max_rate_per_endpoint": 0.22310000000000002, "max_rate_per_instance": 0.22190000000000001, "max_utilization": 0.1633, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "preference": "preference_value", "traffic_duration": "traffic_duration_value", } @@ -8116,6 +8117,7 @@ def test_insert_rest_call_success(request_type): "network_pass_through_lb_traffic_policy": { "zonal_affinity": {"spillover": "spillover_value", "spillover_ratio": 0.163} }, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "outlier_detection": { "base_ejection_time": {}, "consecutive_errors": 1956, @@ -8699,6 +8701,7 @@ def test_patch_rest_call_success(request_type): "max_rate_per_endpoint": 0.22310000000000002, "max_rate_per_instance": 0.22190000000000001, "max_utilization": 0.1633, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "preference": "preference_value", "traffic_duration": "traffic_duration_value", } @@ -8821,6 +8824,7 @@ def test_patch_rest_call_success(request_type): "network_pass_through_lb_traffic_policy": { "zonal_affinity": {"spillover": "spillover_value", "spillover_ratio": 0.163} }, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "outlier_detection": { "base_ejection_time": {}, "consecutive_errors": 1956, @@ -10089,6 +10093,7 @@ def test_update_rest_call_success(request_type): "max_rate_per_endpoint": 0.22310000000000002, "max_rate_per_instance": 0.22190000000000001, "max_utilization": 0.1633, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "preference": "preference_value", "traffic_duration": "traffic_duration_value", } @@ -10211,6 +10216,7 @@ def test_update_rest_call_success(request_type): "network_pass_through_lb_traffic_policy": { "zonal_affinity": {"spillover": "spillover_value", "spillover_ratio": 0.163} }, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "outlier_detection": { "base_ejection_time": {}, "consecutive_errors": 1956, diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_disks.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_disks.py index 7225d5c30068..194b10a56b2e 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_disks.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_disks.py @@ -8539,6 +8539,11 @@ def test_bulk_insert_rest_call_success(request_type): "instant_snapshot_group_parameters": { "source_instant_snapshot_group": "source_instant_snapshot_group_value" }, + "snapshot_group_parameters": { + "replica_zones": ["replica_zones_value1", "replica_zones_value2"], + "source_snapshot_group": "source_snapshot_group_value", + "type_": "type__value", + }, "source_consistency_group_policy": "source_consistency_group_policy_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -9060,6 +9065,8 @@ def test_create_snapshot_rest_call_success(request_type): "rsa_encrypted_key": "rsa_encrypted_key_value", "sha256": "sha256_value", }, + "snapshot_group_id": "snapshot_group_id_value", + "snapshot_group_name": "snapshot_group_name_value", "snapshot_type": "snapshot_type_value", "source_disk": "source_disk_value", "source_disk_encryption_key": {}, diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_instance_group_managers.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_instance_group_managers.py index 71e1f1a85465..4d331bf2eef0 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_instance_group_managers.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_instance_group_managers.py @@ -2345,7 +2345,7 @@ def test_apply_updates_to_instances_unary_rest_flattened_error(transport: str = ) -def test_create_instances_rest_use_cached_wrapped_rpc(): +def test_configure_accelerator_topologies_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -2359,19 +2359,22 @@ def test_create_instances_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.create_instances in client._transport._wrapped_methods + assert ( + client._transport.configure_accelerator_topologies + in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.create_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[ + client._transport.configure_accelerator_topologies + ] = mock_rpc request = {} - client.create_instances(request) + client.configure_accelerator_topologies(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -2380,15 +2383,15 @@ def test_create_instances_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.create_instances(request) + client.configure_accelerator_topologies(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_create_instances_rest_required_fields( - request_type=compute.CreateInstancesInstanceGroupManagerRequest, +def test_configure_accelerator_topologies_rest_required_fields( + request_type=compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -2406,7 +2409,7 @@ def test_create_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).create_instances._get_unset_required_fields(jsonified_request) + ).configure_accelerator_topologies._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -2417,7 +2420,7 @@ def test_create_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).create_instances._get_unset_required_fields(jsonified_request) + ).configure_accelerator_topologies._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -2466,25 +2469,27 @@ def test_create_instances_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.create_instances(request) + response = client.configure_accelerator_topologies(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_create_instances_rest_unset_required_fields(): +def test_configure_accelerator_topologies_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.create_instances._get_unset_required_fields({}) + unset_fields = ( + transport.configure_accelerator_topologies._get_unset_required_fields({}) + ) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersCreateInstancesRequestResource", + "instanceGroupManagersConfigureAcceleratorTopologiesRequestResource", "project", "zone", ) @@ -2492,7 +2497,7 @@ def test_create_instances_rest_unset_required_fields(): ) -def test_create_instances_rest_flattened(): +def test_configure_accelerator_topologies_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -2515,8 +2520,8 @@ def test_create_instances_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest( - instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")] + instance_group_managers_configure_accelerator_topologies_request_resource=compute.InstanceGroupManagersConfigureAcceleratorTopologiesRequest( + accelerator_topology_actions={"key_value": "value_value"} ), ) mock_args.update(sample_request) @@ -2531,20 +2536,20 @@ def test_create_instances_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.create_instances(**mock_args) + client.configure_accelerator_topologies(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/createInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/configureAcceleratorTopologies" % client.transport._host, args[1], ) -def test_create_instances_rest_flattened_error(transport: str = "rest"): +def test_configure_accelerator_topologies_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -2553,18 +2558,18 @@ def test_create_instances_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.create_instances( - compute.CreateInstancesInstanceGroupManagerRequest(), + client.configure_accelerator_topologies( + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest( - instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")] + instance_group_managers_configure_accelerator_topologies_request_resource=compute.InstanceGroupManagersConfigureAcceleratorTopologiesRequest( + accelerator_topology_actions={"key_value": "value_value"} ), ) -def test_create_instances_unary_rest_use_cached_wrapped_rpc(): +def test_configure_accelerator_topologies_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -2578,19 +2583,22 @@ def test_create_instances_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.create_instances in client._transport._wrapped_methods + assert ( + client._transport.configure_accelerator_topologies + in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.create_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[ + client._transport.configure_accelerator_topologies + ] = mock_rpc request = {} - client.create_instances_unary(request) + client.configure_accelerator_topologies_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -2599,15 +2607,15 @@ def test_create_instances_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.create_instances_unary(request) + client.configure_accelerator_topologies_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_create_instances_unary_rest_required_fields( - request_type=compute.CreateInstancesInstanceGroupManagerRequest, +def test_configure_accelerator_topologies_unary_rest_required_fields( + request_type=compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -2625,7 +2633,7 @@ def test_create_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).create_instances._get_unset_required_fields(jsonified_request) + ).configure_accelerator_topologies._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -2636,7 +2644,7 @@ def test_create_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).create_instances._get_unset_required_fields(jsonified_request) + ).configure_accelerator_topologies._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -2685,25 +2693,27 @@ def test_create_instances_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.create_instances_unary(request) + response = client.configure_accelerator_topologies_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_create_instances_unary_rest_unset_required_fields(): +def test_configure_accelerator_topologies_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.create_instances._get_unset_required_fields({}) + unset_fields = ( + transport.configure_accelerator_topologies._get_unset_required_fields({}) + ) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersCreateInstancesRequestResource", + "instanceGroupManagersConfigureAcceleratorTopologiesRequestResource", "project", "zone", ) @@ -2711,7 +2721,7 @@ def test_create_instances_unary_rest_unset_required_fields(): ) -def test_create_instances_unary_rest_flattened(): +def test_configure_accelerator_topologies_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -2734,8 +2744,8 @@ def test_create_instances_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest( - instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")] + instance_group_managers_configure_accelerator_topologies_request_resource=compute.InstanceGroupManagersConfigureAcceleratorTopologiesRequest( + accelerator_topology_actions={"key_value": "value_value"} ), ) mock_args.update(sample_request) @@ -2750,20 +2760,22 @@ def test_create_instances_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.create_instances_unary(**mock_args) + client.configure_accelerator_topologies_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/createInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/configureAcceleratorTopologies" % client.transport._host, args[1], ) -def test_create_instances_unary_rest_flattened_error(transport: str = "rest"): +def test_configure_accelerator_topologies_unary_rest_flattened_error( + transport: str = "rest", +): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -2772,18 +2784,18 @@ def test_create_instances_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.create_instances_unary( - compute.CreateInstancesInstanceGroupManagerRequest(), + client.configure_accelerator_topologies_unary( + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest( - instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")] + instance_group_managers_configure_accelerator_topologies_request_resource=compute.InstanceGroupManagersConfigureAcceleratorTopologiesRequest( + accelerator_topology_actions={"key_value": "value_value"} ), ) -def test_delete_rest_use_cached_wrapped_rpc(): +def test_create_instances_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -2797,17 +2809,19 @@ def test_delete_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.delete in client._transport._wrapped_methods + assert client._transport.create_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.delete] = mock_rpc + client._transport._wrapped_methods[client._transport.create_instances] = ( + mock_rpc + ) request = {} - client.delete(request) + client.create_instances(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -2816,15 +2830,15 @@ def test_delete_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete(request) + client.create_instances(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_delete_rest_required_fields( - request_type=compute.DeleteInstanceGroupManagerRequest, +def test_create_instances_rest_required_fields( + request_type=compute.CreateInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -2842,7 +2856,7 @@ def test_delete_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete._get_unset_required_fields(jsonified_request) + ).create_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -2853,7 +2867,7 @@ def test_delete_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete._get_unset_required_fields(jsonified_request) + ).create_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -2885,9 +2899,10 @@ def test_delete_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "delete", + "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -2901,24 +2916,25 @@ def test_delete_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete(request) + response = client.create_instances(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_delete_rest_unset_required_fields(): +def test_create_instances_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.delete._get_unset_required_fields({}) + unset_fields = transport.create_instances._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", + "instanceGroupManagersCreateInstancesRequestResource", "project", "zone", ) @@ -2926,7 +2942,7 @@ def test_delete_rest_unset_required_fields(): ) -def test_delete_rest_flattened(): +def test_create_instances_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -2949,6 +2965,9 @@ def test_delete_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", + instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest( + instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")] + ), ) mock_args.update(sample_request) @@ -2962,20 +2981,20 @@ def test_delete_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete(**mock_args) + client.create_instances(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/createInstances" % client.transport._host, args[1], ) -def test_delete_rest_flattened_error(transport: str = "rest"): +def test_create_instances_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -2984,15 +3003,18 @@ def test_delete_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete( - compute.DeleteInstanceGroupManagerRequest(), + client.create_instances( + compute.CreateInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", + instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest( + instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")] + ), ) -def test_delete_unary_rest_use_cached_wrapped_rpc(): +def test_create_instances_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -3006,17 +3028,19 @@ def test_delete_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.delete in client._transport._wrapped_methods + assert client._transport.create_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.delete] = mock_rpc + client._transport._wrapped_methods[client._transport.create_instances] = ( + mock_rpc + ) request = {} - client.delete_unary(request) + client.create_instances_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -3025,15 +3049,15 @@ def test_delete_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete_unary(request) + client.create_instances_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_delete_unary_rest_required_fields( - request_type=compute.DeleteInstanceGroupManagerRequest, +def test_create_instances_unary_rest_required_fields( + request_type=compute.CreateInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -3051,7 +3075,7 @@ def test_delete_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete._get_unset_required_fields(jsonified_request) + ).create_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -3062,7 +3086,7 @@ def test_delete_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete._get_unset_required_fields(jsonified_request) + ).create_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -3094,9 +3118,10 @@ def test_delete_unary_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "delete", + "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -3110,24 +3135,25 @@ def test_delete_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_unary(request) + response = client.create_instances_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_delete_unary_rest_unset_required_fields(): +def test_create_instances_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.delete._get_unset_required_fields({}) + unset_fields = transport.create_instances._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", + "instanceGroupManagersCreateInstancesRequestResource", "project", "zone", ) @@ -3135,7 +3161,7 @@ def test_delete_unary_rest_unset_required_fields(): ) -def test_delete_unary_rest_flattened(): +def test_create_instances_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -3158,6 +3184,9 @@ def test_delete_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", + instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest( + instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")] + ), ) mock_args.update(sample_request) @@ -3171,20 +3200,20 @@ def test_delete_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete_unary(**mock_args) + client.create_instances_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/createInstances" % client.transport._host, args[1], ) -def test_delete_unary_rest_flattened_error(transport: str = "rest"): +def test_create_instances_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -3193,15 +3222,18 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete_unary( - compute.DeleteInstanceGroupManagerRequest(), + client.create_instances_unary( + compute.CreateInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", + instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest( + instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")] + ), ) -def test_delete_instances_rest_use_cached_wrapped_rpc(): +def test_delete_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -3215,19 +3247,17 @@ def test_delete_instances_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.delete_instances in client._transport._wrapped_methods + assert client._transport.delete in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.delete_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.delete] = mock_rpc request = {} - client.delete_instances(request) + client.delete(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -3236,15 +3266,15 @@ def test_delete_instances_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete_instances(request) + client.delete(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_delete_instances_rest_required_fields( - request_type=compute.DeleteInstancesInstanceGroupManagerRequest, +def test_delete_rest_required_fields( + request_type=compute.DeleteInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -3262,7 +3292,7 @@ def test_delete_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_instances._get_unset_required_fields(jsonified_request) + ).delete._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -3273,7 +3303,7 @@ def test_delete_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_instances._get_unset_required_fields(jsonified_request) + ).delete._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -3305,10 +3335,9 @@ def test_delete_instances_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "delete", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -3322,25 +3351,24 @@ def test_delete_instances_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_instances(request) + response = client.delete(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_delete_instances_rest_unset_required_fields(): +def test_delete_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.delete_instances._get_unset_required_fields({}) + unset_fields = transport.delete._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersDeleteInstancesRequestResource", "project", "zone", ) @@ -3348,7 +3376,7 @@ def test_delete_instances_rest_unset_required_fields(): ) -def test_delete_instances_rest_flattened(): +def test_delete_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -3371,9 +3399,6 @@ def test_delete_instances_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest( - instances=["instances_value"] - ), ) mock_args.update(sample_request) @@ -3387,20 +3412,20 @@ def test_delete_instances_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete_instances(**mock_args) + client.delete(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deleteInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" % client.transport._host, args[1], ) -def test_delete_instances_rest_flattened_error(transport: str = "rest"): +def test_delete_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -3409,18 +3434,15 @@ def test_delete_instances_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete_instances( - compute.DeleteInstancesInstanceGroupManagerRequest(), + client.delete( + compute.DeleteInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest( - instances=["instances_value"] - ), ) -def test_delete_instances_unary_rest_use_cached_wrapped_rpc(): +def test_delete_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -3434,19 +3456,17 @@ def test_delete_instances_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.delete_instances in client._transport._wrapped_methods + assert client._transport.delete in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.delete_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.delete] = mock_rpc request = {} - client.delete_instances_unary(request) + client.delete_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -3455,15 +3475,15 @@ def test_delete_instances_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete_instances_unary(request) + client.delete_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_delete_instances_unary_rest_required_fields( - request_type=compute.DeleteInstancesInstanceGroupManagerRequest, +def test_delete_unary_rest_required_fields( + request_type=compute.DeleteInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -3481,7 +3501,7 @@ def test_delete_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_instances._get_unset_required_fields(jsonified_request) + ).delete._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -3492,7 +3512,7 @@ def test_delete_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_instances._get_unset_required_fields(jsonified_request) + ).delete._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -3524,10 +3544,9 @@ def test_delete_instances_unary_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "delete", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -3541,25 +3560,24 @@ def test_delete_instances_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_instances_unary(request) + response = client.delete_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_delete_instances_unary_rest_unset_required_fields(): +def test_delete_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.delete_instances._get_unset_required_fields({}) + unset_fields = transport.delete._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersDeleteInstancesRequestResource", "project", "zone", ) @@ -3567,7 +3585,7 @@ def test_delete_instances_unary_rest_unset_required_fields(): ) -def test_delete_instances_unary_rest_flattened(): +def test_delete_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -3590,9 +3608,6 @@ def test_delete_instances_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest( - instances=["instances_value"] - ), ) mock_args.update(sample_request) @@ -3606,20 +3621,20 @@ def test_delete_instances_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete_instances_unary(**mock_args) + client.delete_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deleteInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" % client.transport._host, args[1], ) -def test_delete_instances_unary_rest_flattened_error(transport: str = "rest"): +def test_delete_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -3628,18 +3643,15 @@ def test_delete_instances_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete_instances_unary( - compute.DeleteInstancesInstanceGroupManagerRequest(), + client.delete_unary( + compute.DeleteInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest( - instances=["instances_value"] - ), ) -def test_delete_per_instance_configs_rest_use_cached_wrapped_rpc(): +def test_delete_instances_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -3653,22 +3665,19 @@ def test_delete_per_instance_configs_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.delete_per_instance_configs - in client._transport._wrapped_methods - ) + assert client._transport.delete_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[ - client._transport.delete_per_instance_configs - ] = mock_rpc + client._transport._wrapped_methods[client._transport.delete_instances] = ( + mock_rpc + ) request = {} - client.delete_per_instance_configs(request) + client.delete_instances(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -3677,15 +3686,15 @@ def test_delete_per_instance_configs_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete_per_instance_configs(request) + client.delete_instances(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_delete_per_instance_configs_rest_required_fields( - request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest, +def test_delete_instances_rest_required_fields( + request_type=compute.DeleteInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -3703,7 +3712,7 @@ def test_delete_per_instance_configs_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_per_instance_configs._get_unset_required_fields(jsonified_request) + ).delete_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -3714,7 +3723,9 @@ def test_delete_per_instance_configs_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_per_instance_configs._get_unset_required_fields(jsonified_request) + ).delete_instances._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -3761,25 +3772,25 @@ def test_delete_per_instance_configs_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_per_instance_configs(request) + response = client.delete_instances(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_delete_per_instance_configs_rest_unset_required_fields(): +def test_delete_instances_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({}) + unset_fields = transport.delete_instances._get_unset_required_fields({}) assert set(unset_fields) == ( - set(()) + set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersDeletePerInstanceConfigsReqResource", + "instanceGroupManagersDeleteInstancesRequestResource", "project", "zone", ) @@ -3787,7 +3798,7 @@ def test_delete_per_instance_configs_rest_unset_required_fields(): ) -def test_delete_per_instance_configs_rest_flattened(): +def test_delete_instances_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -3810,8 +3821,8 @@ def test_delete_per_instance_configs_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq( - names=["names_value"] + instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest( + instances=["instances_value"] ), ) mock_args.update(sample_request) @@ -3826,20 +3837,20 @@ def test_delete_per_instance_configs_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete_per_instance_configs(**mock_args) + client.delete_instances(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deleteInstances" % client.transport._host, args[1], ) -def test_delete_per_instance_configs_rest_flattened_error(transport: str = "rest"): +def test_delete_instances_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -3848,18 +3859,18 @@ def test_delete_per_instance_configs_rest_flattened_error(transport: str = "rest # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete_per_instance_configs( - compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(), + client.delete_instances( + compute.DeleteInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq( - names=["names_value"] + instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest( + instances=["instances_value"] ), ) -def test_delete_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): +def test_delete_instances_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -3873,22 +3884,19 @@ def test_delete_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.delete_per_instance_configs - in client._transport._wrapped_methods - ) + assert client._transport.delete_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[ - client._transport.delete_per_instance_configs - ] = mock_rpc + client._transport._wrapped_methods[client._transport.delete_instances] = ( + mock_rpc + ) request = {} - client.delete_per_instance_configs_unary(request) + client.delete_instances_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -3897,15 +3905,15 @@ def test_delete_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete_per_instance_configs_unary(request) + client.delete_instances_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_delete_per_instance_configs_unary_rest_required_fields( - request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest, +def test_delete_instances_unary_rest_required_fields( + request_type=compute.DeleteInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -3923,7 +3931,7 @@ def test_delete_per_instance_configs_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_per_instance_configs._get_unset_required_fields(jsonified_request) + ).delete_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -3934,7 +3942,9 @@ def test_delete_per_instance_configs_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_per_instance_configs._get_unset_required_fields(jsonified_request) + ).delete_instances._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -3981,25 +3991,25 @@ def test_delete_per_instance_configs_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_per_instance_configs_unary(request) + response = client.delete_instances_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_delete_per_instance_configs_unary_rest_unset_required_fields(): +def test_delete_instances_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({}) + unset_fields = transport.delete_instances._get_unset_required_fields({}) assert set(unset_fields) == ( - set(()) + set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersDeletePerInstanceConfigsReqResource", + "instanceGroupManagersDeleteInstancesRequestResource", "project", "zone", ) @@ -4007,7 +4017,7 @@ def test_delete_per_instance_configs_unary_rest_unset_required_fields(): ) -def test_delete_per_instance_configs_unary_rest_flattened(): +def test_delete_instances_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4030,8 +4040,8 @@ def test_delete_per_instance_configs_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq( - names=["names_value"] + instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest( + instances=["instances_value"] ), ) mock_args.update(sample_request) @@ -4046,22 +4056,20 @@ def test_delete_per_instance_configs_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete_per_instance_configs_unary(**mock_args) + client.delete_instances_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deleteInstances" % client.transport._host, args[1], ) -def test_delete_per_instance_configs_unary_rest_flattened_error( - transport: str = "rest", -): +def test_delete_instances_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4070,18 +4078,18 @@ def test_delete_per_instance_configs_unary_rest_flattened_error( # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete_per_instance_configs_unary( - compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(), + client.delete_instances_unary( + compute.DeleteInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq( - names=["names_value"] + instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest( + instances=["instances_value"] ), ) -def test_get_rest_use_cached_wrapped_rpc(): +def test_delete_per_instance_configs_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -4095,29 +4103,40 @@ def test_get_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.get in client._transport._wrapped_methods + assert ( + client._transport.delete_per_instance_configs + in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.get] = mock_rpc + client._transport._wrapped_methods[ + client._transport.delete_per_instance_configs + ] = mock_rpc request = {} - client.get(request) + client.delete_per_instance_configs(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.delete_per_instance_configs(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRequest): +def test_delete_per_instance_configs_rest_required_fields( + request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest, +): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} @@ -4134,7 +4153,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRe unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get._get_unset_required_fields(jsonified_request) + ).delete_per_instance_configs._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -4145,7 +4164,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRe unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get._get_unset_required_fields(jsonified_request) + ).delete_per_instance_configs._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -4163,7 +4182,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRe request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManager() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -4175,40 +4194,42 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRe pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "get", + "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManager.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.get(request) + response = client.delete_per_instance_configs(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_get_rest_unset_required_fields(): +def test_delete_per_instance_configs_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.get._get_unset_required_fields({}) + unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({}) assert set(unset_fields) == ( set(()) & set( ( "instanceGroupManager", + "instanceGroupManagersDeletePerInstanceConfigsReqResource", "project", "zone", ) @@ -4216,7 +4237,7 @@ def test_get_rest_unset_required_fields(): ) -def test_get_rest_flattened(): +def test_delete_per_instance_configs_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4225,7 +4246,7 @@ def test_get_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManager() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = { @@ -4239,6 +4260,9 @@ def test_get_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", + instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq( + names=["names_value"] + ), ) mock_args.update(sample_request) @@ -4246,26 +4270,26 @@ def test_get_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManager.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.get(**mock_args) + client.delete_per_instance_configs(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs" % client.transport._host, args[1], ) -def test_get_rest_flattened_error(transport: str = "rest"): +def test_delete_per_instance_configs_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4274,15 +4298,18 @@ def test_get_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get( - compute.GetInstanceGroupManagerRequest(), + client.delete_per_instance_configs( + compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", + instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq( + names=["names_value"] + ), ) -def test_get_available_accelerator_topologies_rest_use_cached_wrapped_rpc(): +def test_delete_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -4297,7 +4324,7 @@ def test_get_available_accelerator_topologies_rest_use_cached_wrapped_rpc(): # Ensure method has been cached assert ( - client._transport.get_available_accelerator_topologies + client._transport.delete_per_instance_configs in client._transport._wrapped_methods ) @@ -4307,30 +4334,34 @@ def test_get_available_accelerator_topologies_rest_use_cached_wrapped_rpc(): "foo" # operation_request.operation in compute client(s) expect a string. ) client._transport._wrapped_methods[ - client._transport.get_available_accelerator_topologies + client._transport.delete_per_instance_configs ] = mock_rpc request = {} - client.get_available_accelerator_topologies(request) + client.delete_per_instance_configs_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get_available_accelerator_topologies(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.delete_per_instance_configs_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_get_available_accelerator_topologies_rest_required_fields( - request_type=compute.GetAvailableAcceleratorTopologiesInstanceGroupManagerRequest, +def test_delete_per_instance_configs_unary_rest_required_fields( + request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} + request_init["instance_group_manager"] = "" request_init["project"] = "" - request_init["resource_id"] = "" request_init["zone"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) @@ -4342,25 +4373,25 @@ def test_get_available_accelerator_topologies_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_available_accelerator_topologies._get_unset_required_fields(jsonified_request) + ).delete_per_instance_configs._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present + jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" - jsonified_request["resourceId"] = "resource_id_value" jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_available_accelerator_topologies._get_unset_required_fields(jsonified_request) + ).delete_per_instance_configs._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone + assert "instanceGroupManager" in jsonified_request + assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" - assert "resourceId" in jsonified_request - assert jsonified_request["resourceId"] == "resource_id_value" assert "zone" in jsonified_request assert jsonified_request["zone"] == "zone_value" @@ -4371,9 +4402,7 @@ def test_get_available_accelerator_topologies_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = ( - compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse() - ) + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -4385,52 +4414,50 @@ def test_get_available_accelerator_topologies_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "get", + "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse.pb( - return_value - ) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.get_available_accelerator_topologies(request) + response = client.delete_per_instance_configs_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_get_available_accelerator_topologies_rest_unset_required_fields(): +def test_delete_per_instance_configs_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = ( - transport.get_available_accelerator_topologies._get_unset_required_fields({}) - ) + unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({}) assert set(unset_fields) == ( set(()) & set( ( + "instanceGroupManager", + "instanceGroupManagersDeletePerInstanceConfigsReqResource", "project", - "resourceId", "zone", ) ) ) -def test_get_available_accelerator_topologies_rest_flattened(): +def test_delete_per_instance_configs_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4439,22 +4466,23 @@ def test_get_available_accelerator_topologies_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = ( - compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse() - ) + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = { "project": "sample1", "zone": "sample2", - "resource_id": "sample3", + "instance_group_manager": "sample3", } # get truthy value for each flattened field mock_args = dict( project="project_value", zone="zone_value", - resource_id="resource_id_value", + instance_group_manager="instance_group_manager_value", + instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq( + names=["names_value"] + ), ) mock_args.update(sample_request) @@ -4462,30 +4490,26 @@ def test_get_available_accelerator_topologies_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = ( - compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse.pb( - return_value - ) - ) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.get_available_accelerator_topologies(**mock_args) + client.delete_per_instance_configs_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{resource_id}/getAvailableAcceleratorTopologies" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs" % client.transport._host, args[1], ) -def test_get_available_accelerator_topologies_rest_flattened_error( +def test_delete_per_instance_configs_unary_rest_flattened_error( transport: str = "rest", ): client = InstanceGroupManagersClient( @@ -4496,15 +4520,18 @@ def test_get_available_accelerator_topologies_rest_flattened_error( # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get_available_accelerator_topologies( - compute.GetAvailableAcceleratorTopologiesInstanceGroupManagerRequest(), + client.delete_per_instance_configs_unary( + compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(), project="project_value", zone="zone_value", - resource_id="resource_id_value", + instance_group_manager="instance_group_manager_value", + instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq( + names=["names_value"] + ), ) -def test_insert_rest_use_cached_wrapped_rpc(): +def test_get_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -4518,38 +4545,33 @@ def test_insert_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.insert in client._transport._wrapped_methods + assert client._transport.get in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.insert] = mock_rpc + client._transport._wrapped_methods[client._transport.get] = mock_rpc request = {} - client.insert(request) + client.get(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.insert(request) + client.get(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_insert_rest_required_fields( - request_type=compute.InsertInstanceGroupManagerRequest, -): +def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRequest): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} + request_init["instance_group_manager"] = "" request_init["project"] = "" request_init["zone"] = "" request = request_type(**request_init) @@ -4562,22 +4584,23 @@ def test_insert_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).insert._get_unset_required_fields(jsonified_request) + ).get._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present + jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).insert._get_unset_required_fields(jsonified_request) - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + ).get._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone + assert "instanceGroupManager" in jsonified_request + assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" assert "zone" in jsonified_request @@ -4590,7 +4613,7 @@ def test_insert_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.InstanceGroupManager() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -4602,41 +4625,40 @@ def test_insert_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "get", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.InstanceGroupManager.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.insert(request) + response = client.get(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_insert_rest_unset_required_fields(): +def test_get_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.insert._get_unset_required_fields({}) + unset_fields = transport.get._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set(()) & set( ( - "instanceGroupManagerResource", + "instanceGroupManager", "project", "zone", ) @@ -4644,7 +4666,7 @@ def test_insert_rest_unset_required_fields(): ) -def test_insert_rest_flattened(): +def test_get_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4653,22 +4675,20 @@ def test_insert_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.InstanceGroupManager() # get arguments that satisfy an http rule for this method - sample_request = {"project": "sample1", "zone": "sample2"} + sample_request = { + "project": "sample1", + "zone": "sample2", + "instance_group_manager": "sample3", + } # get truthy value for each flattened field mock_args = dict( project="project_value", zone="zone_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) - ), + instance_group_manager="instance_group_manager_value", ) mock_args.update(sample_request) @@ -4676,26 +4696,26 @@ def test_insert_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.InstanceGroupManager.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.insert(**mock_args) + client.get(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" % client.transport._host, args[1], ) -def test_insert_rest_flattened_error(transport: str = "rest"): +def test_get_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4704,21 +4724,15 @@ def test_insert_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.insert( - compute.InsertInstanceGroupManagerRequest(), + client.get( + compute.GetInstanceGroupManagerRequest(), project="project_value", zone="zone_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) - ), + instance_group_manager="instance_group_manager_value", ) -def test_insert_unary_rest_use_cached_wrapped_rpc(): +def test_get_available_accelerator_topologies_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -4732,39 +4746,41 @@ def test_insert_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.insert in client._transport._wrapped_methods + assert ( + client._transport.get_available_accelerator_topologies + in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.insert] = mock_rpc + client._transport._wrapped_methods[ + client._transport.get_available_accelerator_topologies + ] = mock_rpc request = {} - client.insert_unary(request) + client.get_available_accelerator_topologies(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.insert_unary(request) + client.get_available_accelerator_topologies(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_insert_unary_rest_required_fields( - request_type=compute.InsertInstanceGroupManagerRequest, +def test_get_available_accelerator_topologies_rest_required_fields( + request_type=compute.GetAvailableAcceleratorTopologiesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} request_init["project"] = "" + request_init["resource_id"] = "" request_init["zone"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) @@ -4776,24 +4792,25 @@ def test_insert_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).insert._get_unset_required_fields(jsonified_request) + ).get_available_accelerator_topologies._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present jsonified_request["project"] = "project_value" + jsonified_request["resourceId"] = "resource_id_value" jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).insert._get_unset_required_fields(jsonified_request) - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + ).get_available_accelerator_topologies._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" + assert "resourceId" in jsonified_request + assert jsonified_request["resourceId"] == "resource_id_value" assert "zone" in jsonified_request assert jsonified_request["zone"] == "zone_value" @@ -4804,7 +4821,9 @@ def test_insert_unary_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = ( + compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse() + ) # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -4816,49 +4835,52 @@ def test_insert_unary_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "get", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse.pb( + return_value + ) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.insert_unary(request) + response = client.get_available_accelerator_topologies(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_insert_unary_rest_unset_required_fields(): +def test_get_available_accelerator_topologies_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.insert._get_unset_required_fields({}) + unset_fields = ( + transport.get_available_accelerator_topologies._get_unset_required_fields({}) + ) assert set(unset_fields) == ( - set(("requestId",)) + set(()) & set( ( - "instanceGroupManagerResource", "project", + "resourceId", "zone", ) ) ) -def test_insert_unary_rest_flattened(): +def test_get_available_accelerator_topologies_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4867,22 +4889,22 @@ def test_insert_unary_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = ( + compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse() + ) # get arguments that satisfy an http rule for this method - sample_request = {"project": "sample1", "zone": "sample2"} + sample_request = { + "project": "sample1", + "zone": "sample2", + "resource_id": "sample3", + } # get truthy value for each flattened field mock_args = dict( project="project_value", zone="zone_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) - ), + resource_id="resource_id_value", ) mock_args.update(sample_request) @@ -4890,26 +4912,32 @@ def test_insert_unary_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = ( + compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse.pb( + return_value + ) + ) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.insert_unary(**mock_args) + client.get_available_accelerator_topologies(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{resource_id}/getAvailableAcceleratorTopologies" % client.transport._host, args[1], ) -def test_insert_unary_rest_flattened_error(transport: str = "rest"): +def test_get_available_accelerator_topologies_rest_flattened_error( + transport: str = "rest", +): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4918,21 +4946,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.insert_unary( - compute.InsertInstanceGroupManagerRequest(), + client.get_available_accelerator_topologies( + compute.GetAvailableAcceleratorTopologiesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) - ), + resource_id="resource_id_value", ) -def test_list_rest_use_cached_wrapped_rpc(): +def test_insert_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -4946,30 +4968,34 @@ def test_list_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.list in client._transport._wrapped_methods + assert client._transport.insert in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.list] = mock_rpc + client._transport._wrapped_methods[client._transport.insert] = mock_rpc request = {} - client.list(request) + client.insert(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.insert(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_list_rest_required_fields( - request_type=compute.ListInstanceGroupManagersRequest, +def test_insert_rest_required_fields( + request_type=compute.InsertInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -4986,7 +5012,7 @@ def test_list_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list._get_unset_required_fields(jsonified_request) + ).insert._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -4996,17 +5022,9 @@ def test_list_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list._get_unset_required_fields(jsonified_request) + ).insert._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "filter", - "max_results", - "order_by", - "page_token", - "return_partial_success", - ) - ) + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -5022,7 +5040,7 @@ def test_list_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManagerList() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -5034,47 +5052,41 @@ def test_list_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "get", + "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManagerList.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.list(request) + response = client.insert(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_list_rest_unset_required_fields(): +def test_insert_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.list._get_unset_required_fields({}) + unset_fields = transport.insert._get_unset_required_fields({}) assert set(unset_fields) == ( - set( - ( - "filter", - "maxResults", - "orderBy", - "pageToken", - "returnPartialSuccess", - ) - ) + set(("requestId",)) & set( ( + "instanceGroupManagerResource", "project", "zone", ) @@ -5082,7 +5094,7 @@ def test_list_rest_unset_required_fields(): ) -def test_list_rest_flattened(): +def test_insert_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5091,7 +5103,7 @@ def test_list_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManagerList() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = {"project": "sample1", "zone": "sample2"} @@ -5100,6 +5112,13 @@ def test_list_rest_flattened(): mock_args = dict( project="project_value", zone="zone_value", + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) + ), ) mock_args.update(sample_request) @@ -5107,13 +5126,13 @@ def test_list_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManagerList.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list(**mock_args) + client.insert(**mock_args) # Establish that the underlying call was made with the expected # request object values. @@ -5126,7 +5145,7 @@ def test_list_rest_flattened(): ) -def test_list_rest_flattened_error(transport: str = "rest"): +def test_insert_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5135,75 +5154,21 @@ def test_list_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.list( - compute.ListInstanceGroupManagersRequest(), + client.insert( + compute.InsertInstanceGroupManagerRequest(), project="project_value", zone="zone_value", - ) - - -def test_list_rest_pager(transport: str = "rest"): - client = InstanceGroupManagersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, - ) - - # Mock the http request call within the method and fake a response. - with mock.patch.object(Session, "request") as req: - # TODO(kbandes): remove this mock unless there's a good reason for it. - # with mock.patch.object(path_template, 'transcode') as transcode: - # Set the response as a series of pages - response = ( - compute.InstanceGroupManagerList( - items=[ - compute.InstanceGroupManager(), - compute.InstanceGroupManager(), - compute.InstanceGroupManager(), - ], - next_page_token="abc", - ), - compute.InstanceGroupManagerList( - items=[], - next_page_token="def", - ), - compute.InstanceGroupManagerList( - items=[ - compute.InstanceGroupManager(), - ], - next_page_token="ghi", - ), - compute.InstanceGroupManagerList( - items=[ - compute.InstanceGroupManager(), - compute.InstanceGroupManager(), - ], + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) - # Two responses for two calls - response = response + response - - # Wrap the values into proper Response objs - response = tuple(compute.InstanceGroupManagerList.to_json(x) for x in response) - return_values = tuple(Response() for i in response) - for return_val, response_val in zip(return_values, response): - return_val._content = response_val.encode("UTF-8") - return_val.status_code = 200 - req.side_effect = return_values - - sample_request = {"project": "sample1", "zone": "sample2"} - - pager = client.list(request=sample_request) - - results = list(pager) - assert len(results) == 6 - assert all(isinstance(i, compute.InstanceGroupManager) for i in results) - - pages = list(client.list(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token -def test_list_errors_rest_use_cached_wrapped_rpc(): +def test_insert_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -5217,35 +5182,38 @@ def test_list_errors_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.list_errors in client._transport._wrapped_methods + assert client._transport.insert in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.list_errors] = mock_rpc + client._transport._wrapped_methods[client._transport.insert] = mock_rpc request = {} - client.list_errors(request) + client.insert_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list_errors(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.insert_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_list_errors_rest_required_fields( - request_type=compute.ListErrorsInstanceGroupManagersRequest, +def test_insert_unary_rest_required_fields( + request_type=compute.InsertInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} - request_init["instance_group_manager"] = "" request_init["project"] = "" request_init["zone"] = "" request = request_type(**request_init) @@ -5258,33 +5226,22 @@ def test_list_errors_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_errors._get_unset_required_fields(jsonified_request) + ).insert._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present - jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_errors._get_unset_required_fields(jsonified_request) + ).insert._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "filter", - "max_results", - "order_by", - "page_token", - "return_partial_success", - ) - ) + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone - assert "instanceGroupManager" in jsonified_request - assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" assert "zone" in jsonified_request @@ -5297,7 +5254,7 @@ def test_list_errors_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManagersListErrorsResponse() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -5309,50 +5266,41 @@ def test_list_errors_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "get", + "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManagersListErrorsResponse.pb( - return_value - ) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.list_errors(request) + response = client.insert_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_list_errors_rest_unset_required_fields(): +def test_insert_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.list_errors._get_unset_required_fields({}) + unset_fields = transport.insert._get_unset_required_fields({}) assert set(unset_fields) == ( - set( - ( - "filter", - "maxResults", - "orderBy", - "pageToken", - "returnPartialSuccess", - ) - ) + set(("requestId",)) & set( ( - "instanceGroupManager", + "instanceGroupManagerResource", "project", "zone", ) @@ -5360,7 +5308,7 @@ def test_list_errors_rest_unset_required_fields(): ) -def test_list_errors_rest_flattened(): +def test_insert_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5369,20 +5317,22 @@ def test_list_errors_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManagersListErrorsResponse() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method - sample_request = { - "project": "sample1", - "zone": "sample2", - "instance_group_manager": "sample3", - } + sample_request = {"project": "sample1", "zone": "sample2"} # get truthy value for each flattened field mock_args = dict( project="project_value", zone="zone_value", - instance_group_manager="instance_group_manager_value", + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) + ), ) mock_args.update(sample_request) @@ -5390,26 +5340,26 @@ def test_list_errors_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManagersListErrorsResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_errors(**mock_args) + client.insert_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listErrors" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers" % client.transport._host, args[1], ) -def test_list_errors_rest_flattened_error(transport: str = "rest"): +def test_insert_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5418,82 +5368,21 @@ def test_list_errors_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.list_errors( - compute.ListErrorsInstanceGroupManagersRequest(), + client.insert_unary( + compute.InsertInstanceGroupManagerRequest(), project="project_value", zone="zone_value", - instance_group_manager="instance_group_manager_value", - ) - - -def test_list_errors_rest_pager(transport: str = "rest"): - client = InstanceGroupManagersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, - ) - - # Mock the http request call within the method and fake a response. - with mock.patch.object(Session, "request") as req: - # TODO(kbandes): remove this mock unless there's a good reason for it. - # with mock.patch.object(path_template, 'transcode') as transcode: - # Set the response as a series of pages - response = ( - compute.InstanceGroupManagersListErrorsResponse( - items=[ - compute.InstanceManagedByIgmError(), - compute.InstanceManagedByIgmError(), - compute.InstanceManagedByIgmError(), - ], - next_page_token="abc", - ), - compute.InstanceGroupManagersListErrorsResponse( - items=[], - next_page_token="def", - ), - compute.InstanceGroupManagersListErrorsResponse( - items=[ - compute.InstanceManagedByIgmError(), - ], - next_page_token="ghi", - ), - compute.InstanceGroupManagersListErrorsResponse( - items=[ - compute.InstanceManagedByIgmError(), - compute.InstanceManagedByIgmError(), - ], + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) - # Two responses for two calls - response = response + response - - # Wrap the values into proper Response objs - response = tuple( - compute.InstanceGroupManagersListErrorsResponse.to_json(x) for x in response - ) - return_values = tuple(Response() for i in response) - for return_val, response_val in zip(return_values, response): - return_val._content = response_val.encode("UTF-8") - return_val.status_code = 200 - req.side_effect = return_values - - sample_request = { - "project": "sample1", - "zone": "sample2", - "instance_group_manager": "sample3", - } - - pager = client.list_errors(request=sample_request) - - results = list(pager) - assert len(results) == 6 - assert all(isinstance(i, compute.InstanceManagedByIgmError) for i in results) - - pages = list(client.list_errors(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token -def test_list_managed_instances_rest_use_cached_wrapped_rpc(): +def test_list_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -5507,40 +5396,34 @@ def test_list_managed_instances_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.list_managed_instances - in client._transport._wrapped_methods - ) + assert client._transport.list in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.list_managed_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.list] = mock_rpc request = {} - client.list_managed_instances(request) + client.list(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list_managed_instances(request) + client.list(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_list_managed_instances_rest_required_fields( - request_type=compute.ListManagedInstancesInstanceGroupManagersRequest, +def test_list_rest_required_fields( + request_type=compute.ListInstanceGroupManagersRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} - request_init["instance_group_manager"] = "" request_init["project"] = "" request_init["zone"] = "" request = request_type(**request_init) @@ -5553,18 +5436,17 @@ def test_list_managed_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_managed_instances._get_unset_required_fields(jsonified_request) + ).list._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present - jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_managed_instances._get_unset_required_fields(jsonified_request) + ).list._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( @@ -5578,8 +5460,6 @@ def test_list_managed_instances_rest_required_fields( jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone - assert "instanceGroupManager" in jsonified_request - assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" assert "zone" in jsonified_request @@ -5592,7 +5472,7 @@ def test_list_managed_instances_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManagersListManagedInstancesResponse() + return_value = compute.InstanceGroupManagerList() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -5604,7 +5484,7 @@ def test_list_managed_instances_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "get", "query_params": pb_request, } transcode.return_value = transcode_result @@ -5613,28 +5493,26 @@ def test_list_managed_instances_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManagersListManagedInstancesResponse.pb( - return_value - ) + return_value = compute.InstanceGroupManagerList.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.list_managed_instances(request) + response = client.list(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_list_managed_instances_rest_unset_required_fields(): +def test_list_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.list_managed_instances._get_unset_required_fields({}) + unset_fields = transport.list._get_unset_required_fields({}) assert set(unset_fields) == ( set( ( @@ -5647,7 +5525,6 @@ def test_list_managed_instances_rest_unset_required_fields(): ) & set( ( - "instanceGroupManager", "project", "zone", ) @@ -5655,7 +5532,7 @@ def test_list_managed_instances_rest_unset_required_fields(): ) -def test_list_managed_instances_rest_flattened(): +def test_list_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5664,20 +5541,15 @@ def test_list_managed_instances_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManagersListManagedInstancesResponse() + return_value = compute.InstanceGroupManagerList() # get arguments that satisfy an http rule for this method - sample_request = { - "project": "sample1", - "zone": "sample2", - "instance_group_manager": "sample3", - } + sample_request = {"project": "sample1", "zone": "sample2"} # get truthy value for each flattened field mock_args = dict( project="project_value", zone="zone_value", - instance_group_manager="instance_group_manager_value", ) mock_args.update(sample_request) @@ -5685,28 +5557,26 @@ def test_list_managed_instances_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManagersListManagedInstancesResponse.pb( - return_value - ) + return_value = compute.InstanceGroupManagerList.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_managed_instances(**mock_args) + client.list(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listManagedInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers" % client.transport._host, args[1], ) -def test_list_managed_instances_rest_flattened_error(transport: str = "rest"): +def test_list_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5715,15 +5585,14 @@ def test_list_managed_instances_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.list_managed_instances( - compute.ListManagedInstancesInstanceGroupManagersRequest(), + client.list( + compute.ListInstanceGroupManagersRequest(), project="project_value", zone="zone_value", - instance_group_manager="instance_group_manager_value", ) -def test_list_managed_instances_rest_pager(transport: str = "rest"): +def test_list_rest_pager(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5735,28 +5604,28 @@ def test_list_managed_instances_rest_pager(transport: str = "rest"): # with mock.patch.object(path_template, 'transcode') as transcode: # Set the response as a series of pages response = ( - compute.InstanceGroupManagersListManagedInstancesResponse( - managed_instances=[ - compute.ManagedInstance(), - compute.ManagedInstance(), - compute.ManagedInstance(), + compute.InstanceGroupManagerList( + items=[ + compute.InstanceGroupManager(), + compute.InstanceGroupManager(), + compute.InstanceGroupManager(), ], next_page_token="abc", ), - compute.InstanceGroupManagersListManagedInstancesResponse( - managed_instances=[], + compute.InstanceGroupManagerList( + items=[], next_page_token="def", ), - compute.InstanceGroupManagersListManagedInstancesResponse( - managed_instances=[ - compute.ManagedInstance(), + compute.InstanceGroupManagerList( + items=[ + compute.InstanceGroupManager(), ], next_page_token="ghi", ), - compute.InstanceGroupManagersListManagedInstancesResponse( - managed_instances=[ - compute.ManagedInstance(), - compute.ManagedInstance(), + compute.InstanceGroupManagerList( + items=[ + compute.InstanceGroupManager(), + compute.InstanceGroupManager(), ], ), ) @@ -5764,34 +5633,27 @@ def test_list_managed_instances_rest_pager(transport: str = "rest"): response = response + response # Wrap the values into proper Response objs - response = tuple( - compute.InstanceGroupManagersListManagedInstancesResponse.to_json(x) - for x in response - ) + response = tuple(compute.InstanceGroupManagerList.to_json(x) for x in response) return_values = tuple(Response() for i in response) for return_val, response_val in zip(return_values, response): return_val._content = response_val.encode("UTF-8") return_val.status_code = 200 req.side_effect = return_values - sample_request = { - "project": "sample1", - "zone": "sample2", - "instance_group_manager": "sample3", - } + sample_request = {"project": "sample1", "zone": "sample2"} - pager = client.list_managed_instances(request=sample_request) + pager = client.list(request=sample_request) results = list(pager) assert len(results) == 6 - assert all(isinstance(i, compute.ManagedInstance) for i in results) + assert all(isinstance(i, compute.InstanceGroupManager) for i in results) - pages = list(client.list_managed_instances(request=sample_request).pages) + pages = list(client.list(request=sample_request).pages) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token -def test_list_per_instance_configs_rest_use_cached_wrapped_rpc(): +def test_list_errors_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -5805,35 +5667,30 @@ def test_list_per_instance_configs_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.list_per_instance_configs - in client._transport._wrapped_methods - ) + assert client._transport.list_errors in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[ - client._transport.list_per_instance_configs - ] = mock_rpc + client._transport._wrapped_methods[client._transport.list_errors] = mock_rpc request = {} - client.list_per_instance_configs(request) + client.list_errors(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list_per_instance_configs(request) + client.list_errors(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_list_per_instance_configs_rest_required_fields( - request_type=compute.ListPerInstanceConfigsInstanceGroupManagersRequest, +def test_list_errors_rest_required_fields( + request_type=compute.ListErrorsInstanceGroupManagersRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -5851,7 +5708,7 @@ def test_list_per_instance_configs_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_per_instance_configs._get_unset_required_fields(jsonified_request) + ).list_errors._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -5862,7 +5719,7 @@ def test_list_per_instance_configs_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_per_instance_configs._get_unset_required_fields(jsonified_request) + ).list_errors._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( @@ -5890,7 +5747,7 @@ def test_list_per_instance_configs_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp() + return_value = compute.InstanceGroupManagersListErrorsResponse() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -5902,7 +5759,7 @@ def test_list_per_instance_configs_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "get", "query_params": pb_request, } transcode.return_value = transcode_result @@ -5911,7 +5768,7 @@ def test_list_per_instance_configs_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp.pb( + return_value = compute.InstanceGroupManagersListErrorsResponse.pb( return_value ) json_return_value = json_format.MessageToJson(return_value) @@ -5920,19 +5777,19 @@ def test_list_per_instance_configs_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.list_per_instance_configs(request) + response = client.list_errors(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_list_per_instance_configs_rest_unset_required_fields(): +def test_list_errors_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.list_per_instance_configs._get_unset_required_fields({}) + unset_fields = transport.list_errors._get_unset_required_fields({}) assert set(unset_fields) == ( set( ( @@ -5953,7 +5810,7 @@ def test_list_per_instance_configs_rest_unset_required_fields(): ) -def test_list_per_instance_configs_rest_flattened(): +def test_list_errors_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5962,7 +5819,7 @@ def test_list_per_instance_configs_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp() + return_value = compute.InstanceGroupManagersListErrorsResponse() # get arguments that satisfy an http rule for this method sample_request = { @@ -5983,28 +5840,26 @@ def test_list_per_instance_configs_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp.pb( - return_value - ) + return_value = compute.InstanceGroupManagersListErrorsResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_per_instance_configs(**mock_args) + client.list_errors(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listPerInstanceConfigs" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listErrors" % client.transport._host, args[1], ) -def test_list_per_instance_configs_rest_flattened_error(transport: str = "rest"): +def test_list_errors_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6013,15 +5868,15 @@ def test_list_per_instance_configs_rest_flattened_error(transport: str = "rest") # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.list_per_instance_configs( - compute.ListPerInstanceConfigsInstanceGroupManagersRequest(), + client.list_errors( + compute.ListErrorsInstanceGroupManagersRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", ) -def test_list_per_instance_configs_rest_pager(transport: str = "rest"): +def test_list_errors_rest_pager(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6033,28 +5888,28 @@ def test_list_per_instance_configs_rest_pager(transport: str = "rest"): # with mock.patch.object(path_template, 'transcode') as transcode: # Set the response as a series of pages response = ( - compute.InstanceGroupManagersListPerInstanceConfigsResp( + compute.InstanceGroupManagersListErrorsResponse( items=[ - compute.PerInstanceConfig(), - compute.PerInstanceConfig(), - compute.PerInstanceConfig(), + compute.InstanceManagedByIgmError(), + compute.InstanceManagedByIgmError(), + compute.InstanceManagedByIgmError(), ], next_page_token="abc", ), - compute.InstanceGroupManagersListPerInstanceConfigsResp( + compute.InstanceGroupManagersListErrorsResponse( items=[], next_page_token="def", ), - compute.InstanceGroupManagersListPerInstanceConfigsResp( + compute.InstanceGroupManagersListErrorsResponse( items=[ - compute.PerInstanceConfig(), + compute.InstanceManagedByIgmError(), ], next_page_token="ghi", ), - compute.InstanceGroupManagersListPerInstanceConfigsResp( + compute.InstanceGroupManagersListErrorsResponse( items=[ - compute.PerInstanceConfig(), - compute.PerInstanceConfig(), + compute.InstanceManagedByIgmError(), + compute.InstanceManagedByIgmError(), ], ), ) @@ -6063,8 +5918,7 @@ def test_list_per_instance_configs_rest_pager(transport: str = "rest"): # Wrap the values into proper Response objs response = tuple( - compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(x) - for x in response + compute.InstanceGroupManagersListErrorsResponse.to_json(x) for x in response ) return_values = tuple(Response() for i in response) for return_val, response_val in zip(return_values, response): @@ -6078,18 +5932,18 @@ def test_list_per_instance_configs_rest_pager(transport: str = "rest"): "instance_group_manager": "sample3", } - pager = client.list_per_instance_configs(request=sample_request) + pager = client.list_errors(request=sample_request) results = list(pager) assert len(results) == 6 - assert all(isinstance(i, compute.PerInstanceConfig) for i in results) + assert all(isinstance(i, compute.InstanceManagedByIgmError) for i in results) - pages = list(client.list_per_instance_configs(request=sample_request).pages) + pages = list(client.list_errors(request=sample_request).pages) for page_, token in zip(pages, ["abc", "def", "ghi", ""]): assert page_.raw_page.next_page_token == token -def test_patch_rest_use_cached_wrapped_rpc(): +def test_list_managed_instances_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -6103,34 +5957,35 @@ def test_patch_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.patch in client._transport._wrapped_methods + assert ( + client._transport.list_managed_instances + in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.patch] = mock_rpc + client._transport._wrapped_methods[client._transport.list_managed_instances] = ( + mock_rpc + ) request = {} - client.patch(request) + client.list_managed_instances(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.patch(request) + client.list_managed_instances(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_patch_rest_required_fields( - request_type=compute.PatchInstanceGroupManagerRequest, +def test_list_managed_instances_rest_required_fields( + request_type=compute.ListManagedInstancesInstanceGroupManagersRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -6148,7 +6003,7 @@ def test_patch_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch._get_unset_required_fields(jsonified_request) + ).list_managed_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -6159,9 +6014,17 @@ def test_patch_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch._get_unset_required_fields(jsonified_request) + ).list_managed_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set( + ( + "filter", + "max_results", + "order_by", + "page_token", + "return_partial_success", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -6179,7 +6042,7 @@ def test_patch_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.InstanceGroupManagersListManagedInstancesResponse() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -6191,42 +6054,50 @@ def test_patch_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "patch", + "method": "post", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.InstanceGroupManagersListManagedInstancesResponse.pb( + return_value + ) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch(request) + response = client.list_managed_instances(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_patch_rest_unset_required_fields(): +def test_list_managed_instances_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.patch._get_unset_required_fields({}) + unset_fields = transport.list_managed_instances._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + "returnPartialSuccess", + ) + ) & set( ( "instanceGroupManager", - "instanceGroupManagerResource", "project", "zone", ) @@ -6234,7 +6105,7 @@ def test_patch_rest_unset_required_fields(): ) -def test_patch_rest_flattened(): +def test_list_managed_instances_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6243,7 +6114,7 @@ def test_patch_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.InstanceGroupManagersListManagedInstancesResponse() # get arguments that satisfy an http rule for this method sample_request = { @@ -6257,13 +6128,6 @@ def test_patch_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) - ), ) mock_args.update(sample_request) @@ -6271,26 +6135,28 @@ def test_patch_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.InstanceGroupManagersListManagedInstancesResponse.pb( + return_value + ) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch(**mock_args) + client.list_managed_instances(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listManagedInstances" % client.transport._host, args[1], ) -def test_patch_rest_flattened_error(transport: str = "rest"): +def test_list_managed_instances_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6299,22 +6165,83 @@ def test_patch_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.patch( - compute.PatchInstanceGroupManagerRequest(), + client.list_managed_instances( + compute.ListManagedInstancesInstanceGroupManagersRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) + ) + + +def test_list_managed_instances_rest_pager(transport: str = "rest"): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # TODO(kbandes): remove this mock unless there's a good reason for it. + # with mock.patch.object(path_template, 'transcode') as transcode: + # Set the response as a series of pages + response = ( + compute.InstanceGroupManagersListManagedInstancesResponse( + managed_instances=[ + compute.ManagedInstance(), + compute.ManagedInstance(), + compute.ManagedInstance(), + ], + next_page_token="abc", + ), + compute.InstanceGroupManagersListManagedInstancesResponse( + managed_instances=[], + next_page_token="def", + ), + compute.InstanceGroupManagersListManagedInstancesResponse( + managed_instances=[ + compute.ManagedInstance(), + ], + next_page_token="ghi", + ), + compute.InstanceGroupManagersListManagedInstancesResponse( + managed_instances=[ + compute.ManagedInstance(), + compute.ManagedInstance(), + ], ), ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + compute.InstanceGroupManagersListManagedInstancesResponse.to_json(x) + for x in response + ) + return_values = tuple(Response() for i in response) + for return_val, response_val in zip(return_values, response): + return_val._content = response_val.encode("UTF-8") + return_val.status_code = 200 + req.side_effect = return_values + sample_request = { + "project": "sample1", + "zone": "sample2", + "instance_group_manager": "sample3", + } -def test_patch_unary_rest_use_cached_wrapped_rpc(): + pager = client.list_managed_instances(request=sample_request) + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.ManagedInstance) for i in results) + + pages = list(client.list_managed_instances(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_list_per_instance_configs_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -6328,34 +6255,35 @@ def test_patch_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.patch in client._transport._wrapped_methods + assert ( + client._transport.list_per_instance_configs + in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.patch] = mock_rpc + client._transport._wrapped_methods[ + client._transport.list_per_instance_configs + ] = mock_rpc request = {} - client.patch_unary(request) + client.list_per_instance_configs(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.patch_unary(request) + client.list_per_instance_configs(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_patch_unary_rest_required_fields( - request_type=compute.PatchInstanceGroupManagerRequest, +def test_list_per_instance_configs_rest_required_fields( + request_type=compute.ListPerInstanceConfigsInstanceGroupManagersRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -6373,7 +6301,7 @@ def test_patch_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch._get_unset_required_fields(jsonified_request) + ).list_per_instance_configs._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -6384,9 +6312,17 @@ def test_patch_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch._get_unset_required_fields(jsonified_request) + ).list_per_instance_configs._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set( + ( + "filter", + "max_results", + "order_by", + "page_token", + "return_partial_success", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -6404,7 +6340,7 @@ def test_patch_unary_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -6416,42 +6352,50 @@ def test_patch_unary_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "patch", + "method": "post", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp.pb( + return_value + ) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_unary(request) + response = client.list_per_instance_configs(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_patch_unary_rest_unset_required_fields(): +def test_list_per_instance_configs_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.patch._get_unset_required_fields({}) + unset_fields = transport.list_per_instance_configs._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + "returnPartialSuccess", + ) + ) & set( ( "instanceGroupManager", - "instanceGroupManagerResource", "project", "zone", ) @@ -6459,7 +6403,7 @@ def test_patch_unary_rest_unset_required_fields(): ) -def test_patch_unary_rest_flattened(): +def test_list_per_instance_configs_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6468,7 +6412,7 @@ def test_patch_unary_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp() # get arguments that satisfy an http rule for this method sample_request = { @@ -6482,13 +6426,6 @@ def test_patch_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) - ), ) mock_args.update(sample_request) @@ -6496,26 +6433,28 @@ def test_patch_unary_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp.pb( + return_value + ) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_unary(**mock_args) + client.list_per_instance_configs(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listPerInstanceConfigs" % client.transport._host, args[1], ) -def test_patch_unary_rest_flattened_error(transport: str = "rest"): +def test_list_per_instance_configs_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6524,51 +6463,107 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.patch_unary( - compute.PatchInstanceGroupManagerRequest(), + client.list_per_instance_configs( + compute.ListPerInstanceConfigsInstanceGroupManagersRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) - ), ) -def test_patch_per_instance_configs_rest_use_cached_wrapped_rpc(): - # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, - # instead of constructing them on each call - with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: - client = InstanceGroupManagersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - - # Should wrap all calls on client creation - assert wrapper_fn.call_count > 0 - wrapper_fn.reset_mock() +def test_list_per_instance_configs_rest_pager(transport: str = "rest"): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) - # Ensure method has been cached - assert ( - client._transport.patch_per_instance_configs - in client._transport._wrapped_methods + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # TODO(kbandes): remove this mock unless there's a good reason for it. + # with mock.patch.object(path_template, 'transcode') as transcode: + # Set the response as a series of pages + response = ( + compute.InstanceGroupManagersListPerInstanceConfigsResp( + items=[ + compute.PerInstanceConfig(), + compute.PerInstanceConfig(), + compute.PerInstanceConfig(), + ], + next_page_token="abc", + ), + compute.InstanceGroupManagersListPerInstanceConfigsResp( + items=[], + next_page_token="def", + ), + compute.InstanceGroupManagersListPerInstanceConfigsResp( + items=[ + compute.PerInstanceConfig(), + ], + next_page_token="ghi", + ), + compute.InstanceGroupManagersListPerInstanceConfigsResp( + items=[ + compute.PerInstanceConfig(), + compute.PerInstanceConfig(), + ], + ), ) + # Two responses for two calls + response = response + response - # Replace cached wrapped function with mock - mock_rpc = mock.Mock() - mock_rpc.return_value.name = ( - "foo" # operation_request.operation in compute client(s) expect a string. + # Wrap the values into proper Response objs + response = tuple( + compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(x) + for x in response ) - client._transport._wrapped_methods[ - client._transport.patch_per_instance_configs - ] = mock_rpc + return_values = tuple(Response() for i in response) + for return_val, response_val in zip(return_values, response): + return_val._content = response_val.encode("UTF-8") + return_val.status_code = 200 + req.side_effect = return_values + + sample_request = { + "project": "sample1", + "zone": "sample2", + "instance_group_manager": "sample3", + } + + pager = client.list_per_instance_configs(request=sample_request) + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.PerInstanceConfig) for i in results) + + pages = list(client.list_per_instance_configs(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_patch_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.patch in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.patch] = mock_rpc request = {} - client.patch_per_instance_configs(request) + client.patch(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -6577,15 +6572,15 @@ def test_patch_per_instance_configs_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.patch_per_instance_configs(request) + client.patch(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_patch_per_instance_configs_rest_required_fields( - request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest, +def test_patch_rest_required_fields( + request_type=compute.PatchInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -6603,7 +6598,7 @@ def test_patch_per_instance_configs_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch_per_instance_configs._get_unset_required_fields(jsonified_request) + ).patch._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -6614,7 +6609,7 @@ def test_patch_per_instance_configs_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch_per_instance_configs._get_unset_required_fields(jsonified_request) + ).patch._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -6646,7 +6641,7 @@ def test_patch_per_instance_configs_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "patch", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -6663,25 +6658,25 @@ def test_patch_per_instance_configs_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_per_instance_configs(request) + response = client.patch(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_patch_per_instance_configs_rest_unset_required_fields(): +def test_patch_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({}) + unset_fields = transport.patch._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersPatchPerInstanceConfigsReqResource", + "instanceGroupManagerResource", "project", "zone", ) @@ -6689,7 +6684,7 @@ def test_patch_per_instance_configs_rest_unset_required_fields(): ) -def test_patch_per_instance_configs_rest_flattened(): +def test_patch_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6712,10 +6707,12 @@ def test_patch_per_instance_configs_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq( - per_instance_configs=[ - compute.PerInstanceConfig(fingerprint="fingerprint_value") - ] + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) mock_args.update(sample_request) @@ -6730,20 +6727,20 @@ def test_patch_per_instance_configs_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_per_instance_configs(**mock_args) + client.patch(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" % client.transport._host, args[1], ) -def test_patch_per_instance_configs_rest_flattened_error(transport: str = "rest"): +def test_patch_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6752,20 +6749,22 @@ def test_patch_per_instance_configs_rest_flattened_error(transport: str = "rest" # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.patch_per_instance_configs( - compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(), + client.patch( + compute.PatchInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq( - per_instance_configs=[ - compute.PerInstanceConfig(fingerprint="fingerprint_value") - ] + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) -def test_patch_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): +def test_patch_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -6779,22 +6778,17 @@ def test_patch_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.patch_per_instance_configs - in client._transport._wrapped_methods - ) + assert client._transport.patch in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[ - client._transport.patch_per_instance_configs - ] = mock_rpc + client._transport._wrapped_methods[client._transport.patch] = mock_rpc request = {} - client.patch_per_instance_configs_unary(request) + client.patch_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -6803,15 +6797,15 @@ def test_patch_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.patch_per_instance_configs_unary(request) + client.patch_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_patch_per_instance_configs_unary_rest_required_fields( - request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest, +def test_patch_unary_rest_required_fields( + request_type=compute.PatchInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -6829,7 +6823,7 @@ def test_patch_per_instance_configs_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch_per_instance_configs._get_unset_required_fields(jsonified_request) + ).patch._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -6840,7 +6834,7 @@ def test_patch_per_instance_configs_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch_per_instance_configs._get_unset_required_fields(jsonified_request) + ).patch._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -6872,7 +6866,7 @@ def test_patch_per_instance_configs_unary_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "patch", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -6889,25 +6883,25 @@ def test_patch_per_instance_configs_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_per_instance_configs_unary(request) + response = client.patch_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_patch_per_instance_configs_unary_rest_unset_required_fields(): +def test_patch_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({}) + unset_fields = transport.patch._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersPatchPerInstanceConfigsReqResource", + "instanceGroupManagerResource", "project", "zone", ) @@ -6915,7 +6909,7 @@ def test_patch_per_instance_configs_unary_rest_unset_required_fields(): ) -def test_patch_per_instance_configs_unary_rest_flattened(): +def test_patch_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6938,10 +6932,12 @@ def test_patch_per_instance_configs_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq( - per_instance_configs=[ - compute.PerInstanceConfig(fingerprint="fingerprint_value") - ] + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) mock_args.update(sample_request) @@ -6956,20 +6952,20 @@ def test_patch_per_instance_configs_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_per_instance_configs_unary(**mock_args) + client.patch_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" % client.transport._host, args[1], ) -def test_patch_per_instance_configs_unary_rest_flattened_error(transport: str = "rest"): +def test_patch_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6978,20 +6974,22 @@ def test_patch_per_instance_configs_unary_rest_flattened_error(transport: str = # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.patch_per_instance_configs_unary( - compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(), + client.patch_unary( + compute.PatchInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq( - per_instance_configs=[ - compute.PerInstanceConfig(fingerprint="fingerprint_value") - ] + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) -def test_recreate_instances_rest_use_cached_wrapped_rpc(): +def test_patch_per_instance_configs_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -7006,7 +7004,8 @@ def test_recreate_instances_rest_use_cached_wrapped_rpc(): # Ensure method has been cached assert ( - client._transport.recreate_instances in client._transport._wrapped_methods + client._transport.patch_per_instance_configs + in client._transport._wrapped_methods ) # Replace cached wrapped function with mock @@ -7014,12 +7013,12 @@ def test_recreate_instances_rest_use_cached_wrapped_rpc(): mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.recreate_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[ + client._transport.patch_per_instance_configs + ] = mock_rpc request = {} - client.recreate_instances(request) + client.patch_per_instance_configs(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -7028,15 +7027,15 @@ def test_recreate_instances_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.recreate_instances(request) + client.patch_per_instance_configs(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_recreate_instances_rest_required_fields( - request_type=compute.RecreateInstancesInstanceGroupManagerRequest, +def test_patch_per_instance_configs_rest_required_fields( + request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -7054,7 +7053,7 @@ def test_recreate_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).recreate_instances._get_unset_required_fields(jsonified_request) + ).patch_per_instance_configs._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -7065,7 +7064,7 @@ def test_recreate_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).recreate_instances._get_unset_required_fields(jsonified_request) + ).patch_per_instance_configs._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -7114,25 +7113,25 @@ def test_recreate_instances_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.recreate_instances(request) + response = client.patch_per_instance_configs(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_recreate_instances_rest_unset_required_fields(): +def test_patch_per_instance_configs_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.recreate_instances._get_unset_required_fields({}) + unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersRecreateInstancesRequestResource", + "instanceGroupManagersPatchPerInstanceConfigsReqResource", "project", "zone", ) @@ -7140,7 +7139,7 @@ def test_recreate_instances_rest_unset_required_fields(): ) -def test_recreate_instances_rest_flattened(): +def test_patch_per_instance_configs_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -7163,8 +7162,10 @@ def test_recreate_instances_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest( - instances=["instances_value"] + instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq( + per_instance_configs=[ + compute.PerInstanceConfig(fingerprint="fingerprint_value") + ] ), ) mock_args.update(sample_request) @@ -7179,20 +7180,20 @@ def test_recreate_instances_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.recreate_instances(**mock_args) + client.patch_per_instance_configs(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/recreateInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs" % client.transport._host, args[1], ) -def test_recreate_instances_rest_flattened_error(transport: str = "rest"): +def test_patch_per_instance_configs_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -7201,18 +7202,20 @@ def test_recreate_instances_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.recreate_instances( - compute.RecreateInstancesInstanceGroupManagerRequest(), + client.patch_per_instance_configs( + compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest( - instances=["instances_value"] + instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq( + per_instance_configs=[ + compute.PerInstanceConfig(fingerprint="fingerprint_value") + ] ), ) -def test_recreate_instances_unary_rest_use_cached_wrapped_rpc(): +def test_patch_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -7227,7 +7230,8 @@ def test_recreate_instances_unary_rest_use_cached_wrapped_rpc(): # Ensure method has been cached assert ( - client._transport.recreate_instances in client._transport._wrapped_methods + client._transport.patch_per_instance_configs + in client._transport._wrapped_methods ) # Replace cached wrapped function with mock @@ -7235,12 +7239,12 @@ def test_recreate_instances_unary_rest_use_cached_wrapped_rpc(): mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.recreate_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[ + client._transport.patch_per_instance_configs + ] = mock_rpc request = {} - client.recreate_instances_unary(request) + client.patch_per_instance_configs_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -7249,15 +7253,15 @@ def test_recreate_instances_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.recreate_instances_unary(request) + client.patch_per_instance_configs_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_recreate_instances_unary_rest_required_fields( - request_type=compute.RecreateInstancesInstanceGroupManagerRequest, +def test_patch_per_instance_configs_unary_rest_required_fields( + request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -7275,7 +7279,7 @@ def test_recreate_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).recreate_instances._get_unset_required_fields(jsonified_request) + ).patch_per_instance_configs._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -7286,7 +7290,7 @@ def test_recreate_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).recreate_instances._get_unset_required_fields(jsonified_request) + ).patch_per_instance_configs._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -7335,25 +7339,25 @@ def test_recreate_instances_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.recreate_instances_unary(request) + response = client.patch_per_instance_configs_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_recreate_instances_unary_rest_unset_required_fields(): +def test_patch_per_instance_configs_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.recreate_instances._get_unset_required_fields({}) + unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersRecreateInstancesRequestResource", + "instanceGroupManagersPatchPerInstanceConfigsReqResource", "project", "zone", ) @@ -7361,7 +7365,7 @@ def test_recreate_instances_unary_rest_unset_required_fields(): ) -def test_recreate_instances_unary_rest_flattened(): +def test_patch_per_instance_configs_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -7384,10 +7388,12 @@ def test_recreate_instances_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest( - instances=["instances_value"] - ), - ) + instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq( + per_instance_configs=[ + compute.PerInstanceConfig(fingerprint="fingerprint_value") + ] + ), + ) mock_args.update(sample_request) # Wrap the value into a proper Response obj @@ -7400,20 +7406,20 @@ def test_recreate_instances_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.recreate_instances_unary(**mock_args) + client.patch_per_instance_configs_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/recreateInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs" % client.transport._host, args[1], ) -def test_recreate_instances_unary_rest_flattened_error(transport: str = "rest"): +def test_patch_per_instance_configs_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -7422,18 +7428,20 @@ def test_recreate_instances_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.recreate_instances_unary( - compute.RecreateInstancesInstanceGroupManagerRequest(), + client.patch_per_instance_configs_unary( + compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest( - instances=["instances_value"] + instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq( + per_instance_configs=[ + compute.PerInstanceConfig(fingerprint="fingerprint_value") + ] ), ) -def test_resize_rest_use_cached_wrapped_rpc(): +def test_recreate_instances_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -7447,17 +7455,21 @@ def test_resize_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.resize in client._transport._wrapped_methods + assert ( + client._transport.recreate_instances in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.resize] = mock_rpc + client._transport._wrapped_methods[client._transport.recreate_instances] = ( + mock_rpc + ) request = {} - client.resize(request) + client.recreate_instances(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -7466,22 +7478,21 @@ def test_resize_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.resize(request) + client.recreate_instances(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_resize_rest_required_fields( - request_type=compute.ResizeInstanceGroupManagerRequest, +def test_recreate_instances_rest_required_fields( + request_type=compute.RecreateInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} request_init["instance_group_manager"] = "" request_init["project"] = "" - request_init["size"] = 0 request_init["zone"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) @@ -7490,32 +7501,23 @@ def test_resize_rest_required_fields( ) # verify fields with default values are dropped - assert "size" not in jsonified_request unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resize._get_unset_required_fields(jsonified_request) + ).recreate_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present - assert "size" in jsonified_request - assert jsonified_request["size"] == request_init["size"] jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" - jsonified_request["size"] = 443 jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resize._get_unset_required_fields(jsonified_request) + ).recreate_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "request_id", - "size", - ) - ) + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -7523,8 +7525,6 @@ def test_resize_rest_required_fields( assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" - assert "size" in jsonified_request - assert jsonified_request["size"] == 443 assert "zone" in jsonified_request assert jsonified_request["zone"] == "zone_value" @@ -7550,6 +7550,7 @@ def test_resize_rest_required_fields( "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -7563,43 +7564,33 @@ def test_resize_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.resize(request) + response = client.recreate_instances(request) - expected_params = [ - ( - "size", - str(0), - ), - ] + expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_resize_rest_unset_required_fields(): +def test_recreate_instances_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.resize._get_unset_required_fields({}) + unset_fields = transport.recreate_instances._get_unset_required_fields({}) assert set(unset_fields) == ( - set( - ( - "requestId", - "size", - ) - ) + set(("requestId",)) & set( ( "instanceGroupManager", + "instanceGroupManagersRecreateInstancesRequestResource", "project", - "size", "zone", ) ) ) -def test_resize_rest_flattened(): +def test_recreate_instances_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -7622,7 +7613,9 @@ def test_resize_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - size=443, + instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest( + instances=["instances_value"] + ), ) mock_args.update(sample_request) @@ -7636,20 +7629,20 @@ def test_resize_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.resize(**mock_args) + client.recreate_instances(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resize" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/recreateInstances" % client.transport._host, args[1], ) -def test_resize_rest_flattened_error(transport: str = "rest"): +def test_recreate_instances_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -7658,16 +7651,18 @@ def test_resize_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.resize( - compute.ResizeInstanceGroupManagerRequest(), + client.recreate_instances( + compute.RecreateInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - size=443, + instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest( + instances=["instances_value"] + ), ) -def test_resize_unary_rest_use_cached_wrapped_rpc(): +def test_recreate_instances_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -7681,17 +7676,21 @@ def test_resize_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.resize in client._transport._wrapped_methods + assert ( + client._transport.recreate_instances in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.resize] = mock_rpc + client._transport._wrapped_methods[client._transport.recreate_instances] = ( + mock_rpc + ) request = {} - client.resize_unary(request) + client.recreate_instances_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -7700,22 +7699,21 @@ def test_resize_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.resize_unary(request) + client.recreate_instances_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_resize_unary_rest_required_fields( - request_type=compute.ResizeInstanceGroupManagerRequest, +def test_recreate_instances_unary_rest_required_fields( + request_type=compute.RecreateInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} request_init["instance_group_manager"] = "" request_init["project"] = "" - request_init["size"] = 0 request_init["zone"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) @@ -7724,32 +7722,23 @@ def test_resize_unary_rest_required_fields( ) # verify fields with default values are dropped - assert "size" not in jsonified_request unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resize._get_unset_required_fields(jsonified_request) + ).recreate_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present - assert "size" in jsonified_request - assert jsonified_request["size"] == request_init["size"] jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" - jsonified_request["size"] = 443 jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resize._get_unset_required_fields(jsonified_request) + ).recreate_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "request_id", - "size", - ) - ) + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -7757,8 +7746,6 @@ def test_resize_unary_rest_required_fields( assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" - assert "size" in jsonified_request - assert jsonified_request["size"] == 443 assert "zone" in jsonified_request assert jsonified_request["zone"] == "zone_value" @@ -7784,6 +7771,7 @@ def test_resize_unary_rest_required_fields( "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -7797,43 +7785,33 @@ def test_resize_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.resize_unary(request) + response = client.recreate_instances_unary(request) - expected_params = [ - ( - "size", - str(0), - ), - ] + expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_resize_unary_rest_unset_required_fields(): +def test_recreate_instances_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.resize._get_unset_required_fields({}) + unset_fields = transport.recreate_instances._get_unset_required_fields({}) assert set(unset_fields) == ( - set( - ( - "requestId", - "size", - ) - ) + set(("requestId",)) & set( ( "instanceGroupManager", + "instanceGroupManagersRecreateInstancesRequestResource", "project", - "size", "zone", ) ) ) -def test_resize_unary_rest_flattened(): +def test_recreate_instances_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -7856,7 +7834,9 @@ def test_resize_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - size=443, + instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest( + instances=["instances_value"] + ), ) mock_args.update(sample_request) @@ -7870,20 +7850,20 @@ def test_resize_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.resize_unary(**mock_args) + client.recreate_instances_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resize" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/recreateInstances" % client.transport._host, args[1], ) -def test_resize_unary_rest_flattened_error(transport: str = "rest"): +def test_recreate_instances_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -7892,16 +7872,18 @@ def test_resize_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.resize_unary( - compute.ResizeInstanceGroupManagerRequest(), + client.recreate_instances_unary( + compute.RecreateInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - size=443, + instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest( + instances=["instances_value"] + ), ) -def test_resize_advanced_rest_use_cached_wrapped_rpc(): +def test_resize_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -7915,17 +7897,17 @@ def test_resize_advanced_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.resize_advanced in client._transport._wrapped_methods + assert client._transport.resize in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.resize_advanced] = mock_rpc + client._transport._wrapped_methods[client._transport.resize] = mock_rpc request = {} - client.resize_advanced(request) + client.resize(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -7934,21 +7916,22 @@ def test_resize_advanced_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.resize_advanced(request) + client.resize(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_resize_advanced_rest_required_fields( - request_type=compute.ResizeAdvancedInstanceGroupManagerRequest, +def test_resize_rest_required_fields( + request_type=compute.ResizeInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} request_init["instance_group_manager"] = "" request_init["project"] = "" + request_init["size"] = 0 request_init["zone"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) @@ -7957,23 +7940,32 @@ def test_resize_advanced_rest_required_fields( ) # verify fields with default values are dropped + assert "size" not in jsonified_request unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resize_advanced._get_unset_required_fields(jsonified_request) + ).resize._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present + assert "size" in jsonified_request + assert jsonified_request["size"] == request_init["size"] jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" + jsonified_request["size"] = 443 jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resize_advanced._get_unset_required_fields(jsonified_request) + ).resize._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set( + ( + "request_id", + "size", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -7981,6 +7973,8 @@ def test_resize_advanced_rest_required_fields( assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" + assert "size" in jsonified_request + assert jsonified_request["size"] == 443 assert "zone" in jsonified_request assert jsonified_request["zone"] == "zone_value" @@ -8006,7 +8000,6 @@ def test_resize_advanced_rest_required_fields( "method": "post", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -8020,33 +8013,43 @@ def test_resize_advanced_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.resize_advanced(request) + response = client.resize(request) - expected_params = [] + expected_params = [ + ( + "size", + str(0), + ), + ] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_resize_advanced_rest_unset_required_fields(): +def test_resize_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.resize_advanced._get_unset_required_fields({}) + unset_fields = transport.resize._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set( + ( + "requestId", + "size", + ) + ) & set( ( "instanceGroupManager", - "instanceGroupManagersResizeAdvancedRequestResource", "project", + "size", "zone", ) ) ) -def test_resize_advanced_rest_flattened(): +def test_resize_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -8069,9 +8072,7 @@ def test_resize_advanced_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_resize_advanced_request_resource=compute.InstanceGroupManagersResizeAdvancedRequest( - no_creation_retries=True - ), + size=443, ) mock_args.update(sample_request) @@ -8085,20 +8086,20 @@ def test_resize_advanced_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.resize_advanced(**mock_args) + client.resize(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resizeAdvanced" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resize" % client.transport._host, args[1], ) -def test_resize_advanced_rest_flattened_error(transport: str = "rest"): +def test_resize_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -8107,18 +8108,16 @@ def test_resize_advanced_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.resize_advanced( - compute.ResizeAdvancedInstanceGroupManagerRequest(), + client.resize( + compute.ResizeInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_resize_advanced_request_resource=compute.InstanceGroupManagersResizeAdvancedRequest( - no_creation_retries=True - ), + size=443, ) -def test_resize_advanced_unary_rest_use_cached_wrapped_rpc(): +def test_resize_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -8132,17 +8131,17 @@ def test_resize_advanced_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.resize_advanced in client._transport._wrapped_methods + assert client._transport.resize in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.resize_advanced] = mock_rpc + client._transport._wrapped_methods[client._transport.resize] = mock_rpc request = {} - client.resize_advanced_unary(request) + client.resize_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -8151,21 +8150,22 @@ def test_resize_advanced_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.resize_advanced_unary(request) + client.resize_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_resize_advanced_unary_rest_required_fields( - request_type=compute.ResizeAdvancedInstanceGroupManagerRequest, +def test_resize_unary_rest_required_fields( + request_type=compute.ResizeInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} request_init["instance_group_manager"] = "" request_init["project"] = "" + request_init["size"] = 0 request_init["zone"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) @@ -8174,23 +8174,32 @@ def test_resize_advanced_unary_rest_required_fields( ) # verify fields with default values are dropped + assert "size" not in jsonified_request unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resize_advanced._get_unset_required_fields(jsonified_request) + ).resize._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present + assert "size" in jsonified_request + assert jsonified_request["size"] == request_init["size"] jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" + jsonified_request["size"] = 443 jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resize_advanced._get_unset_required_fields(jsonified_request) + ).resize._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set( + ( + "request_id", + "size", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -8198,6 +8207,8 @@ def test_resize_advanced_unary_rest_required_fields( assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" + assert "size" in jsonified_request + assert jsonified_request["size"] == 443 assert "zone" in jsonified_request assert jsonified_request["zone"] == "zone_value" @@ -8223,7 +8234,6 @@ def test_resize_advanced_unary_rest_required_fields( "method": "post", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -8237,33 +8247,43 @@ def test_resize_advanced_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.resize_advanced_unary(request) + response = client.resize_unary(request) - expected_params = [] + expected_params = [ + ( + "size", + str(0), + ), + ] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_resize_advanced_unary_rest_unset_required_fields(): +def test_resize_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.resize_advanced._get_unset_required_fields({}) + unset_fields = transport.resize._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set( + ( + "requestId", + "size", + ) + ) & set( ( "instanceGroupManager", - "instanceGroupManagersResizeAdvancedRequestResource", "project", + "size", "zone", ) ) ) -def test_resize_advanced_unary_rest_flattened(): +def test_resize_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -8286,9 +8306,7 @@ def test_resize_advanced_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_resize_advanced_request_resource=compute.InstanceGroupManagersResizeAdvancedRequest( - no_creation_retries=True - ), + size=443, ) mock_args.update(sample_request) @@ -8302,20 +8320,20 @@ def test_resize_advanced_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.resize_advanced_unary(**mock_args) + client.resize_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resizeAdvanced" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resize" % client.transport._host, args[1], ) -def test_resize_advanced_unary_rest_flattened_error(transport: str = "rest"): +def test_resize_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -8324,18 +8342,16 @@ def test_resize_advanced_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.resize_advanced_unary( - compute.ResizeAdvancedInstanceGroupManagerRequest(), + client.resize_unary( + compute.ResizeInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_resize_advanced_request_resource=compute.InstanceGroupManagersResizeAdvancedRequest( - no_creation_retries=True - ), + size=443, ) -def test_resume_instances_rest_use_cached_wrapped_rpc(): +def test_resize_advanced_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -8349,19 +8365,17 @@ def test_resume_instances_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.resume_instances in client._transport._wrapped_methods + assert client._transport.resize_advanced in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.resume_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.resize_advanced] = mock_rpc request = {} - client.resume_instances(request) + client.resize_advanced(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -8370,15 +8384,15 @@ def test_resume_instances_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.resume_instances(request) + client.resize_advanced(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_resume_instances_rest_required_fields( - request_type=compute.ResumeInstancesInstanceGroupManagerRequest, +def test_resize_advanced_rest_required_fields( + request_type=compute.ResizeAdvancedInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -8396,7 +8410,7 @@ def test_resume_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resume_instances._get_unset_required_fields(jsonified_request) + ).resize_advanced._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -8407,7 +8421,7 @@ def test_resume_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resume_instances._get_unset_required_fields(jsonified_request) + ).resize_advanced._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -8456,25 +8470,25 @@ def test_resume_instances_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.resume_instances(request) + response = client.resize_advanced(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_resume_instances_rest_unset_required_fields(): +def test_resize_advanced_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.resume_instances._get_unset_required_fields({}) + unset_fields = transport.resize_advanced._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersResumeInstancesRequestResource", + "instanceGroupManagersResizeAdvancedRequestResource", "project", "zone", ) @@ -8482,7 +8496,7 @@ def test_resume_instances_rest_unset_required_fields(): ) -def test_resume_instances_rest_flattened(): +def test_resize_advanced_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -8505,8 +8519,8 @@ def test_resume_instances_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_resume_instances_request_resource=compute.InstanceGroupManagersResumeInstancesRequest( - instances=["instances_value"] + instance_group_managers_resize_advanced_request_resource=compute.InstanceGroupManagersResizeAdvancedRequest( + no_creation_retries=True ), ) mock_args.update(sample_request) @@ -8521,20 +8535,20 @@ def test_resume_instances_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.resume_instances(**mock_args) + client.resize_advanced(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resumeInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resizeAdvanced" % client.transport._host, args[1], ) -def test_resume_instances_rest_flattened_error(transport: str = "rest"): +def test_resize_advanced_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -8543,18 +8557,18 @@ def test_resume_instances_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.resume_instances( - compute.ResumeInstancesInstanceGroupManagerRequest(), + client.resize_advanced( + compute.ResizeAdvancedInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_resume_instances_request_resource=compute.InstanceGroupManagersResumeInstancesRequest( - instances=["instances_value"] + instance_group_managers_resize_advanced_request_resource=compute.InstanceGroupManagersResizeAdvancedRequest( + no_creation_retries=True ), ) -def test_resume_instances_unary_rest_use_cached_wrapped_rpc(): +def test_resize_advanced_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -8568,19 +8582,17 @@ def test_resume_instances_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.resume_instances in client._transport._wrapped_methods + assert client._transport.resize_advanced in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.resume_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.resize_advanced] = mock_rpc request = {} - client.resume_instances_unary(request) + client.resize_advanced_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -8589,15 +8601,15 @@ def test_resume_instances_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.resume_instances_unary(request) + client.resize_advanced_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_resume_instances_unary_rest_required_fields( - request_type=compute.ResumeInstancesInstanceGroupManagerRequest, +def test_resize_advanced_unary_rest_required_fields( + request_type=compute.ResizeAdvancedInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -8615,7 +8627,7 @@ def test_resume_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resume_instances._get_unset_required_fields(jsonified_request) + ).resize_advanced._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -8626,7 +8638,7 @@ def test_resume_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).resume_instances._get_unset_required_fields(jsonified_request) + ).resize_advanced._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -8675,25 +8687,25 @@ def test_resume_instances_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.resume_instances_unary(request) + response = client.resize_advanced_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_resume_instances_unary_rest_unset_required_fields(): +def test_resize_advanced_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.resume_instances._get_unset_required_fields({}) + unset_fields = transport.resize_advanced._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersResumeInstancesRequestResource", + "instanceGroupManagersResizeAdvancedRequestResource", "project", "zone", ) @@ -8701,7 +8713,7 @@ def test_resume_instances_unary_rest_unset_required_fields(): ) -def test_resume_instances_unary_rest_flattened(): +def test_resize_advanced_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -8724,8 +8736,8 @@ def test_resume_instances_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_resume_instances_request_resource=compute.InstanceGroupManagersResumeInstancesRequest( - instances=["instances_value"] + instance_group_managers_resize_advanced_request_resource=compute.InstanceGroupManagersResizeAdvancedRequest( + no_creation_retries=True ), ) mock_args.update(sample_request) @@ -8740,20 +8752,20 @@ def test_resume_instances_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.resume_instances_unary(**mock_args) + client.resize_advanced_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resumeInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resizeAdvanced" % client.transport._host, args[1], ) -def test_resume_instances_unary_rest_flattened_error(transport: str = "rest"): +def test_resize_advanced_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -8762,18 +8774,18 @@ def test_resume_instances_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.resume_instances_unary( - compute.ResumeInstancesInstanceGroupManagerRequest(), + client.resize_advanced_unary( + compute.ResizeAdvancedInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_resume_instances_request_resource=compute.InstanceGroupManagersResumeInstancesRequest( - instances=["instances_value"] + instance_group_managers_resize_advanced_request_resource=compute.InstanceGroupManagersResizeAdvancedRequest( + no_creation_retries=True ), ) -def test_set_auto_healing_policies_rest_use_cached_wrapped_rpc(): +def test_resume_instances_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -8787,22 +8799,19 @@ def test_set_auto_healing_policies_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.set_auto_healing_policies - in client._transport._wrapped_methods - ) + assert client._transport.resume_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[ - client._transport.set_auto_healing_policies - ] = mock_rpc + client._transport._wrapped_methods[client._transport.resume_instances] = ( + mock_rpc + ) request = {} - client.set_auto_healing_policies(request) + client.resume_instances(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -8811,15 +8820,15 @@ def test_set_auto_healing_policies_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.set_auto_healing_policies(request) + client.resume_instances(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_set_auto_healing_policies_rest_required_fields( - request_type=compute.SetAutoHealingPoliciesInstanceGroupManagerRequest, +def test_resume_instances_rest_required_fields( + request_type=compute.ResumeInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -8837,7 +8846,7 @@ def test_set_auto_healing_policies_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_auto_healing_policies._get_unset_required_fields(jsonified_request) + ).resume_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -8848,7 +8857,7 @@ def test_set_auto_healing_policies_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_auto_healing_policies._get_unset_required_fields(jsonified_request) + ).resume_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -8897,25 +8906,25 @@ def test_set_auto_healing_policies_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.set_auto_healing_policies(request) + response = client.resume_instances(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_set_auto_healing_policies_rest_unset_required_fields(): +def test_resume_instances_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.set_auto_healing_policies._get_unset_required_fields({}) + unset_fields = transport.resume_instances._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersSetAutoHealingRequestResource", + "instanceGroupManagersResumeInstancesRequestResource", "project", "zone", ) @@ -8923,7 +8932,7 @@ def test_set_auto_healing_policies_rest_unset_required_fields(): ) -def test_set_auto_healing_policies_rest_flattened(): +def test_resume_instances_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -8946,12 +8955,8 @@ def test_set_auto_healing_policies_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_auto_healing_request_resource=compute.InstanceGroupManagersSetAutoHealingRequest( - auto_healing_policies=[ - compute.InstanceGroupManagerAutoHealingPolicy( - health_check="health_check_value" - ) - ] + instance_group_managers_resume_instances_request_resource=compute.InstanceGroupManagersResumeInstancesRequest( + instances=["instances_value"] ), ) mock_args.update(sample_request) @@ -8966,20 +8971,20 @@ def test_set_auto_healing_policies_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.set_auto_healing_policies(**mock_args) + client.resume_instances(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setAutoHealingPolicies" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resumeInstances" % client.transport._host, args[1], ) -def test_set_auto_healing_policies_rest_flattened_error(transport: str = "rest"): +def test_resume_instances_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -8988,22 +8993,18 @@ def test_set_auto_healing_policies_rest_flattened_error(transport: str = "rest") # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.set_auto_healing_policies( - compute.SetAutoHealingPoliciesInstanceGroupManagerRequest(), + client.resume_instances( + compute.ResumeInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_auto_healing_request_resource=compute.InstanceGroupManagersSetAutoHealingRequest( - auto_healing_policies=[ - compute.InstanceGroupManagerAutoHealingPolicy( - health_check="health_check_value" - ) - ] + instance_group_managers_resume_instances_request_resource=compute.InstanceGroupManagersResumeInstancesRequest( + instances=["instances_value"] ), ) -def test_set_auto_healing_policies_unary_rest_use_cached_wrapped_rpc(): +def test_resume_instances_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -9017,22 +9018,19 @@ def test_set_auto_healing_policies_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.set_auto_healing_policies - in client._transport._wrapped_methods - ) + assert client._transport.resume_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[ - client._transport.set_auto_healing_policies - ] = mock_rpc + client._transport._wrapped_methods[client._transport.resume_instances] = ( + mock_rpc + ) request = {} - client.set_auto_healing_policies_unary(request) + client.resume_instances_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -9041,15 +9039,15 @@ def test_set_auto_healing_policies_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.set_auto_healing_policies_unary(request) + client.resume_instances_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_set_auto_healing_policies_unary_rest_required_fields( - request_type=compute.SetAutoHealingPoliciesInstanceGroupManagerRequest, +def test_resume_instances_unary_rest_required_fields( + request_type=compute.ResumeInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -9067,7 +9065,7 @@ def test_set_auto_healing_policies_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_auto_healing_policies._get_unset_required_fields(jsonified_request) + ).resume_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -9078,7 +9076,7 @@ def test_set_auto_healing_policies_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_auto_healing_policies._get_unset_required_fields(jsonified_request) + ).resume_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -9127,25 +9125,25 @@ def test_set_auto_healing_policies_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.set_auto_healing_policies_unary(request) + response = client.resume_instances_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_set_auto_healing_policies_unary_rest_unset_required_fields(): +def test_resume_instances_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.set_auto_healing_policies._get_unset_required_fields({}) + unset_fields = transport.resume_instances._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersSetAutoHealingRequestResource", + "instanceGroupManagersResumeInstancesRequestResource", "project", "zone", ) @@ -9153,7 +9151,7 @@ def test_set_auto_healing_policies_unary_rest_unset_required_fields(): ) -def test_set_auto_healing_policies_unary_rest_flattened(): +def test_resume_instances_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -9176,12 +9174,8 @@ def test_set_auto_healing_policies_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_auto_healing_request_resource=compute.InstanceGroupManagersSetAutoHealingRequest( - auto_healing_policies=[ - compute.InstanceGroupManagerAutoHealingPolicy( - health_check="health_check_value" - ) - ] + instance_group_managers_resume_instances_request_resource=compute.InstanceGroupManagersResumeInstancesRequest( + instances=["instances_value"] ), ) mock_args.update(sample_request) @@ -9196,20 +9190,20 @@ def test_set_auto_healing_policies_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.set_auto_healing_policies_unary(**mock_args) + client.resume_instances_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setAutoHealingPolicies" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resumeInstances" % client.transport._host, args[1], ) -def test_set_auto_healing_policies_unary_rest_flattened_error(transport: str = "rest"): +def test_resume_instances_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -9218,22 +9212,18 @@ def test_set_auto_healing_policies_unary_rest_flattened_error(transport: str = " # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.set_auto_healing_policies_unary( - compute.SetAutoHealingPoliciesInstanceGroupManagerRequest(), + client.resume_instances_unary( + compute.ResumeInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_auto_healing_request_resource=compute.InstanceGroupManagersSetAutoHealingRequest( - auto_healing_policies=[ - compute.InstanceGroupManagerAutoHealingPolicy( - health_check="health_check_value" - ) - ] + instance_group_managers_resume_instances_request_resource=compute.InstanceGroupManagersResumeInstancesRequest( + instances=["instances_value"] ), ) -def test_set_instance_template_rest_use_cached_wrapped_rpc(): +def test_set_auto_healing_policies_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -9248,7 +9238,7 @@ def test_set_instance_template_rest_use_cached_wrapped_rpc(): # Ensure method has been cached assert ( - client._transport.set_instance_template + client._transport.set_auto_healing_policies in client._transport._wrapped_methods ) @@ -9257,12 +9247,12 @@ def test_set_instance_template_rest_use_cached_wrapped_rpc(): mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.set_instance_template] = ( - mock_rpc - ) + client._transport._wrapped_methods[ + client._transport.set_auto_healing_policies + ] = mock_rpc request = {} - client.set_instance_template(request) + client.set_auto_healing_policies(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -9271,15 +9261,15 @@ def test_set_instance_template_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.set_instance_template(request) + client.set_auto_healing_policies(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_set_instance_template_rest_required_fields( - request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest, +def test_set_auto_healing_policies_rest_required_fields( + request_type=compute.SetAutoHealingPoliciesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -9297,7 +9287,7 @@ def test_set_instance_template_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_instance_template._get_unset_required_fields(jsonified_request) + ).set_auto_healing_policies._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -9308,7 +9298,7 @@ def test_set_instance_template_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_instance_template._get_unset_required_fields(jsonified_request) + ).set_auto_healing_policies._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -9357,25 +9347,25 @@ def test_set_instance_template_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.set_instance_template(request) + response = client.set_auto_healing_policies(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_set_instance_template_rest_unset_required_fields(): +def test_set_auto_healing_policies_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.set_instance_template._get_unset_required_fields({}) + unset_fields = transport.set_auto_healing_policies._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersSetInstanceTemplateRequestResource", + "instanceGroupManagersSetAutoHealingRequestResource", "project", "zone", ) @@ -9383,7 +9373,7 @@ def test_set_instance_template_rest_unset_required_fields(): ) -def test_set_instance_template_rest_flattened(): +def test_set_auto_healing_policies_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -9406,8 +9396,12 @@ def test_set_instance_template_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest( - instance_template="instance_template_value" + instance_group_managers_set_auto_healing_request_resource=compute.InstanceGroupManagersSetAutoHealingRequest( + auto_healing_policies=[ + compute.InstanceGroupManagerAutoHealingPolicy( + health_check="health_check_value" + ) + ] ), ) mock_args.update(sample_request) @@ -9422,20 +9416,20 @@ def test_set_instance_template_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.set_instance_template(**mock_args) + client.set_auto_healing_policies(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setAutoHealingPolicies" % client.transport._host, args[1], ) -def test_set_instance_template_rest_flattened_error(transport: str = "rest"): +def test_set_auto_healing_policies_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -9444,18 +9438,22 @@ def test_set_instance_template_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.set_instance_template( - compute.SetInstanceTemplateInstanceGroupManagerRequest(), + client.set_auto_healing_policies( + compute.SetAutoHealingPoliciesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest( - instance_template="instance_template_value" + instance_group_managers_set_auto_healing_request_resource=compute.InstanceGroupManagersSetAutoHealingRequest( + auto_healing_policies=[ + compute.InstanceGroupManagerAutoHealingPolicy( + health_check="health_check_value" + ) + ] ), ) -def test_set_instance_template_unary_rest_use_cached_wrapped_rpc(): +def test_set_auto_healing_policies_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -9470,7 +9468,7 @@ def test_set_instance_template_unary_rest_use_cached_wrapped_rpc(): # Ensure method has been cached assert ( - client._transport.set_instance_template + client._transport.set_auto_healing_policies in client._transport._wrapped_methods ) @@ -9479,12 +9477,12 @@ def test_set_instance_template_unary_rest_use_cached_wrapped_rpc(): mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.set_instance_template] = ( - mock_rpc - ) + client._transport._wrapped_methods[ + client._transport.set_auto_healing_policies + ] = mock_rpc request = {} - client.set_instance_template_unary(request) + client.set_auto_healing_policies_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -9493,15 +9491,15 @@ def test_set_instance_template_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.set_instance_template_unary(request) + client.set_auto_healing_policies_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_set_instance_template_unary_rest_required_fields( - request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest, +def test_set_auto_healing_policies_unary_rest_required_fields( + request_type=compute.SetAutoHealingPoliciesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -9519,7 +9517,7 @@ def test_set_instance_template_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_instance_template._get_unset_required_fields(jsonified_request) + ).set_auto_healing_policies._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -9530,7 +9528,7 @@ def test_set_instance_template_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_instance_template._get_unset_required_fields(jsonified_request) + ).set_auto_healing_policies._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -9579,25 +9577,25 @@ def test_set_instance_template_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.set_instance_template_unary(request) + response = client.set_auto_healing_policies_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_set_instance_template_unary_rest_unset_required_fields(): +def test_set_auto_healing_policies_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.set_instance_template._get_unset_required_fields({}) + unset_fields = transport.set_auto_healing_policies._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersSetInstanceTemplateRequestResource", + "instanceGroupManagersSetAutoHealingRequestResource", "project", "zone", ) @@ -9605,7 +9603,7 @@ def test_set_instance_template_unary_rest_unset_required_fields(): ) -def test_set_instance_template_unary_rest_flattened(): +def test_set_auto_healing_policies_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -9628,8 +9626,12 @@ def test_set_instance_template_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest( - instance_template="instance_template_value" + instance_group_managers_set_auto_healing_request_resource=compute.InstanceGroupManagersSetAutoHealingRequest( + auto_healing_policies=[ + compute.InstanceGroupManagerAutoHealingPolicy( + health_check="health_check_value" + ) + ] ), ) mock_args.update(sample_request) @@ -9644,20 +9646,20 @@ def test_set_instance_template_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.set_instance_template_unary(**mock_args) + client.set_auto_healing_policies_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setAutoHealingPolicies" % client.transport._host, args[1], ) -def test_set_instance_template_unary_rest_flattened_error(transport: str = "rest"): +def test_set_auto_healing_policies_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -9666,18 +9668,22 @@ def test_set_instance_template_unary_rest_flattened_error(transport: str = "rest # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.set_instance_template_unary( - compute.SetInstanceTemplateInstanceGroupManagerRequest(), + client.set_auto_healing_policies_unary( + compute.SetAutoHealingPoliciesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest( - instance_template="instance_template_value" + instance_group_managers_set_auto_healing_request_resource=compute.InstanceGroupManagersSetAutoHealingRequest( + auto_healing_policies=[ + compute.InstanceGroupManagerAutoHealingPolicy( + health_check="health_check_value" + ) + ] ), ) -def test_set_target_pools_rest_use_cached_wrapped_rpc(): +def test_set_instance_template_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -9691,19 +9697,22 @@ def test_set_target_pools_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.set_target_pools in client._transport._wrapped_methods + assert ( + client._transport.set_instance_template + in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.set_target_pools] = ( + client._transport._wrapped_methods[client._transport.set_instance_template] = ( mock_rpc ) request = {} - client.set_target_pools(request) + client.set_instance_template(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -9712,15 +9721,15 @@ def test_set_target_pools_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.set_target_pools(request) + client.set_instance_template(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_set_target_pools_rest_required_fields( - request_type=compute.SetTargetPoolsInstanceGroupManagerRequest, +def test_set_instance_template_rest_required_fields( + request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -9738,7 +9747,7 @@ def test_set_target_pools_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_target_pools._get_unset_required_fields(jsonified_request) + ).set_instance_template._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -9749,7 +9758,7 @@ def test_set_target_pools_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_target_pools._get_unset_required_fields(jsonified_request) + ).set_instance_template._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -9798,25 +9807,25 @@ def test_set_target_pools_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.set_target_pools(request) + response = client.set_instance_template(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_set_target_pools_rest_unset_required_fields(): +def test_set_instance_template_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.set_target_pools._get_unset_required_fields({}) + unset_fields = transport.set_instance_template._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersSetTargetPoolsRequestResource", + "instanceGroupManagersSetInstanceTemplateRequestResource", "project", "zone", ) @@ -9824,7 +9833,7 @@ def test_set_target_pools_rest_unset_required_fields(): ) -def test_set_target_pools_rest_flattened(): +def test_set_instance_template_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -9847,8 +9856,8 @@ def test_set_target_pools_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest( - fingerprint="fingerprint_value" + instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest( + instance_template="instance_template_value" ), ) mock_args.update(sample_request) @@ -9863,20 +9872,20 @@ def test_set_target_pools_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.set_target_pools(**mock_args) + client.set_instance_template(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setTargetPools" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate" % client.transport._host, args[1], ) -def test_set_target_pools_rest_flattened_error(transport: str = "rest"): +def test_set_instance_template_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -9885,18 +9894,18 @@ def test_set_target_pools_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.set_target_pools( - compute.SetTargetPoolsInstanceGroupManagerRequest(), + client.set_instance_template( + compute.SetInstanceTemplateInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest( - fingerprint="fingerprint_value" + instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest( + instance_template="instance_template_value" ), ) -def test_set_target_pools_unary_rest_use_cached_wrapped_rpc(): +def test_set_instance_template_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -9910,19 +9919,22 @@ def test_set_target_pools_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.set_target_pools in client._transport._wrapped_methods + assert ( + client._transport.set_instance_template + in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.set_target_pools] = ( + client._transport._wrapped_methods[client._transport.set_instance_template] = ( mock_rpc ) request = {} - client.set_target_pools_unary(request) + client.set_instance_template_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -9931,15 +9943,15 @@ def test_set_target_pools_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.set_target_pools_unary(request) + client.set_instance_template_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_set_target_pools_unary_rest_required_fields( - request_type=compute.SetTargetPoolsInstanceGroupManagerRequest, +def test_set_instance_template_unary_rest_required_fields( + request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -9957,7 +9969,7 @@ def test_set_target_pools_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_target_pools._get_unset_required_fields(jsonified_request) + ).set_instance_template._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -9968,7 +9980,7 @@ def test_set_target_pools_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).set_target_pools._get_unset_required_fields(jsonified_request) + ).set_instance_template._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -10017,25 +10029,25 @@ def test_set_target_pools_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.set_target_pools_unary(request) + response = client.set_instance_template_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_set_target_pools_unary_rest_unset_required_fields(): +def test_set_instance_template_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.set_target_pools._get_unset_required_fields({}) + unset_fields = transport.set_instance_template._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersSetTargetPoolsRequestResource", + "instanceGroupManagersSetInstanceTemplateRequestResource", "project", "zone", ) @@ -10043,7 +10055,7 @@ def test_set_target_pools_unary_rest_unset_required_fields(): ) -def test_set_target_pools_unary_rest_flattened(): +def test_set_instance_template_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -10066,8 +10078,8 @@ def test_set_target_pools_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest( - fingerprint="fingerprint_value" + instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest( + instance_template="instance_template_value" ), ) mock_args.update(sample_request) @@ -10082,20 +10094,20 @@ def test_set_target_pools_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.set_target_pools_unary(**mock_args) + client.set_instance_template_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setTargetPools" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate" % client.transport._host, args[1], ) -def test_set_target_pools_unary_rest_flattened_error(transport: str = "rest"): +def test_set_instance_template_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -10104,18 +10116,18 @@ def test_set_target_pools_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.set_target_pools_unary( - compute.SetTargetPoolsInstanceGroupManagerRequest(), + client.set_instance_template_unary( + compute.SetInstanceTemplateInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest( - fingerprint="fingerprint_value" + instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest( + instance_template="instance_template_value" ), ) -def test_start_instances_rest_use_cached_wrapped_rpc(): +def test_set_target_pools_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -10129,17 +10141,19 @@ def test_start_instances_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.start_instances in client._transport._wrapped_methods + assert client._transport.set_target_pools in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.start_instances] = mock_rpc - + client._transport._wrapped_methods[client._transport.set_target_pools] = ( + mock_rpc + ) + request = {} - client.start_instances(request) + client.set_target_pools(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -10148,15 +10162,15 @@ def test_start_instances_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.start_instances(request) + client.set_target_pools(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_start_instances_rest_required_fields( - request_type=compute.StartInstancesInstanceGroupManagerRequest, +def test_set_target_pools_rest_required_fields( + request_type=compute.SetTargetPoolsInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -10174,7 +10188,7 @@ def test_start_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).start_instances._get_unset_required_fields(jsonified_request) + ).set_target_pools._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -10185,7 +10199,7 @@ def test_start_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).start_instances._get_unset_required_fields(jsonified_request) + ).set_target_pools._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -10234,25 +10248,25 @@ def test_start_instances_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.start_instances(request) + response = client.set_target_pools(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_start_instances_rest_unset_required_fields(): +def test_set_target_pools_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.start_instances._get_unset_required_fields({}) + unset_fields = transport.set_target_pools._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersStartInstancesRequestResource", + "instanceGroupManagersSetTargetPoolsRequestResource", "project", "zone", ) @@ -10260,7 +10274,7 @@ def test_start_instances_rest_unset_required_fields(): ) -def test_start_instances_rest_flattened(): +def test_set_target_pools_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -10283,8 +10297,8 @@ def test_start_instances_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_start_instances_request_resource=compute.InstanceGroupManagersStartInstancesRequest( - instances=["instances_value"] + instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest( + fingerprint="fingerprint_value" ), ) mock_args.update(sample_request) @@ -10299,20 +10313,20 @@ def test_start_instances_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.start_instances(**mock_args) + client.set_target_pools(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/startInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setTargetPools" % client.transport._host, args[1], ) -def test_start_instances_rest_flattened_error(transport: str = "rest"): +def test_set_target_pools_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -10321,18 +10335,18 @@ def test_start_instances_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.start_instances( - compute.StartInstancesInstanceGroupManagerRequest(), + client.set_target_pools( + compute.SetTargetPoolsInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_start_instances_request_resource=compute.InstanceGroupManagersStartInstancesRequest( - instances=["instances_value"] + instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest( + fingerprint="fingerprint_value" ), ) -def test_start_instances_unary_rest_use_cached_wrapped_rpc(): +def test_set_target_pools_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -10346,17 +10360,19 @@ def test_start_instances_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.start_instances in client._transport._wrapped_methods + assert client._transport.set_target_pools in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.start_instances] = mock_rpc + client._transport._wrapped_methods[client._transport.set_target_pools] = ( + mock_rpc + ) request = {} - client.start_instances_unary(request) + client.set_target_pools_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -10365,15 +10381,15 @@ def test_start_instances_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.start_instances_unary(request) + client.set_target_pools_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_start_instances_unary_rest_required_fields( - request_type=compute.StartInstancesInstanceGroupManagerRequest, +def test_set_target_pools_unary_rest_required_fields( + request_type=compute.SetTargetPoolsInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -10391,7 +10407,7 @@ def test_start_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).start_instances._get_unset_required_fields(jsonified_request) + ).set_target_pools._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -10402,7 +10418,7 @@ def test_start_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).start_instances._get_unset_required_fields(jsonified_request) + ).set_target_pools._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -10451,25 +10467,25 @@ def test_start_instances_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.start_instances_unary(request) + response = client.set_target_pools_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_start_instances_unary_rest_unset_required_fields(): +def test_set_target_pools_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.start_instances._get_unset_required_fields({}) + unset_fields = transport.set_target_pools._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersStartInstancesRequestResource", + "instanceGroupManagersSetTargetPoolsRequestResource", "project", "zone", ) @@ -10477,7 +10493,7 @@ def test_start_instances_unary_rest_unset_required_fields(): ) -def test_start_instances_unary_rest_flattened(): +def test_set_target_pools_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -10500,8 +10516,8 @@ def test_start_instances_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_start_instances_request_resource=compute.InstanceGroupManagersStartInstancesRequest( - instances=["instances_value"] + instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest( + fingerprint="fingerprint_value" ), ) mock_args.update(sample_request) @@ -10516,20 +10532,20 @@ def test_start_instances_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.start_instances_unary(**mock_args) + client.set_target_pools_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/startInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setTargetPools" % client.transport._host, args[1], ) -def test_start_instances_unary_rest_flattened_error(transport: str = "rest"): +def test_set_target_pools_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -10538,18 +10554,18 @@ def test_start_instances_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.start_instances_unary( - compute.StartInstancesInstanceGroupManagerRequest(), + client.set_target_pools_unary( + compute.SetTargetPoolsInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_start_instances_request_resource=compute.InstanceGroupManagersStartInstancesRequest( - instances=["instances_value"] + instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest( + fingerprint="fingerprint_value" ), ) -def test_stop_instances_rest_use_cached_wrapped_rpc(): +def test_start_instances_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -10563,17 +10579,17 @@ def test_stop_instances_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.stop_instances in client._transport._wrapped_methods + assert client._transport.start_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.stop_instances] = mock_rpc + client._transport._wrapped_methods[client._transport.start_instances] = mock_rpc request = {} - client.stop_instances(request) + client.start_instances(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -10582,15 +10598,15 @@ def test_stop_instances_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.stop_instances(request) + client.start_instances(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_stop_instances_rest_required_fields( - request_type=compute.StopInstancesInstanceGroupManagerRequest, +def test_start_instances_rest_required_fields( + request_type=compute.StartInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -10608,7 +10624,7 @@ def test_stop_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).stop_instances._get_unset_required_fields(jsonified_request) + ).start_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -10619,7 +10635,7 @@ def test_stop_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).stop_instances._get_unset_required_fields(jsonified_request) + ).start_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -10668,25 +10684,25 @@ def test_stop_instances_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.stop_instances(request) + response = client.start_instances(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_stop_instances_rest_unset_required_fields(): +def test_start_instances_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.stop_instances._get_unset_required_fields({}) + unset_fields = transport.start_instances._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersStopInstancesRequestResource", + "instanceGroupManagersStartInstancesRequestResource", "project", "zone", ) @@ -10694,7 +10710,7 @@ def test_stop_instances_rest_unset_required_fields(): ) -def test_stop_instances_rest_flattened(): +def test_start_instances_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -10717,8 +10733,8 @@ def test_stop_instances_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_stop_instances_request_resource=compute.InstanceGroupManagersStopInstancesRequest( - force_stop=True + instance_group_managers_start_instances_request_resource=compute.InstanceGroupManagersStartInstancesRequest( + instances=["instances_value"] ), ) mock_args.update(sample_request) @@ -10733,20 +10749,20 @@ def test_stop_instances_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.stop_instances(**mock_args) + client.start_instances(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/stopInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/startInstances" % client.transport._host, args[1], ) -def test_stop_instances_rest_flattened_error(transport: str = "rest"): +def test_start_instances_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -10755,18 +10771,18 @@ def test_stop_instances_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.stop_instances( - compute.StopInstancesInstanceGroupManagerRequest(), + client.start_instances( + compute.StartInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_stop_instances_request_resource=compute.InstanceGroupManagersStopInstancesRequest( - force_stop=True + instance_group_managers_start_instances_request_resource=compute.InstanceGroupManagersStartInstancesRequest( + instances=["instances_value"] ), ) -def test_stop_instances_unary_rest_use_cached_wrapped_rpc(): +def test_start_instances_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -10780,17 +10796,17 @@ def test_stop_instances_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.stop_instances in client._transport._wrapped_methods + assert client._transport.start_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.stop_instances] = mock_rpc + client._transport._wrapped_methods[client._transport.start_instances] = mock_rpc request = {} - client.stop_instances_unary(request) + client.start_instances_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -10799,15 +10815,15 @@ def test_stop_instances_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.stop_instances_unary(request) + client.start_instances_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_stop_instances_unary_rest_required_fields( - request_type=compute.StopInstancesInstanceGroupManagerRequest, +def test_start_instances_unary_rest_required_fields( + request_type=compute.StartInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -10825,7 +10841,7 @@ def test_stop_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).stop_instances._get_unset_required_fields(jsonified_request) + ).start_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -10836,7 +10852,7 @@ def test_stop_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).stop_instances._get_unset_required_fields(jsonified_request) + ).start_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -10885,25 +10901,25 @@ def test_stop_instances_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.stop_instances_unary(request) + response = client.start_instances_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_stop_instances_unary_rest_unset_required_fields(): +def test_start_instances_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.stop_instances._get_unset_required_fields({}) + unset_fields = transport.start_instances._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersStopInstancesRequestResource", + "instanceGroupManagersStartInstancesRequestResource", "project", "zone", ) @@ -10911,7 +10927,7 @@ def test_stop_instances_unary_rest_unset_required_fields(): ) -def test_stop_instances_unary_rest_flattened(): +def test_start_instances_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -10934,8 +10950,8 @@ def test_stop_instances_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_stop_instances_request_resource=compute.InstanceGroupManagersStopInstancesRequest( - force_stop=True + instance_group_managers_start_instances_request_resource=compute.InstanceGroupManagersStartInstancesRequest( + instances=["instances_value"] ), ) mock_args.update(sample_request) @@ -10950,20 +10966,20 @@ def test_stop_instances_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.stop_instances_unary(**mock_args) + client.start_instances_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/stopInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/startInstances" % client.transport._host, args[1], ) -def test_stop_instances_unary_rest_flattened_error(transport: str = "rest"): +def test_start_instances_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -10972,18 +10988,18 @@ def test_stop_instances_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.stop_instances_unary( - compute.StopInstancesInstanceGroupManagerRequest(), + client.start_instances_unary( + compute.StartInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_stop_instances_request_resource=compute.InstanceGroupManagersStopInstancesRequest( - force_stop=True + instance_group_managers_start_instances_request_resource=compute.InstanceGroupManagersStartInstancesRequest( + instances=["instances_value"] ), ) -def test_suspend_instances_rest_use_cached_wrapped_rpc(): +def test_stop_instances_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -10997,19 +11013,17 @@ def test_suspend_instances_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.suspend_instances in client._transport._wrapped_methods + assert client._transport.stop_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.suspend_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.stop_instances] = mock_rpc request = {} - client.suspend_instances(request) + client.stop_instances(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -11018,15 +11032,15 @@ def test_suspend_instances_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.suspend_instances(request) + client.stop_instances(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_suspend_instances_rest_required_fields( - request_type=compute.SuspendInstancesInstanceGroupManagerRequest, +def test_stop_instances_rest_required_fields( + request_type=compute.StopInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -11044,7 +11058,7 @@ def test_suspend_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).suspend_instances._get_unset_required_fields(jsonified_request) + ).stop_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -11055,7 +11069,7 @@ def test_suspend_instances_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).suspend_instances._get_unset_required_fields(jsonified_request) + ).stop_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -11104,25 +11118,25 @@ def test_suspend_instances_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.suspend_instances(request) + response = client.stop_instances(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_suspend_instances_rest_unset_required_fields(): +def test_stop_instances_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.suspend_instances._get_unset_required_fields({}) + unset_fields = transport.stop_instances._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersSuspendInstancesRequestResource", + "instanceGroupManagersStopInstancesRequestResource", "project", "zone", ) @@ -11130,7 +11144,7 @@ def test_suspend_instances_rest_unset_required_fields(): ) -def test_suspend_instances_rest_flattened(): +def test_stop_instances_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -11153,8 +11167,8 @@ def test_suspend_instances_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_suspend_instances_request_resource=compute.InstanceGroupManagersSuspendInstancesRequest( - force_suspend=True + instance_group_managers_stop_instances_request_resource=compute.InstanceGroupManagersStopInstancesRequest( + force_stop=True ), ) mock_args.update(sample_request) @@ -11169,20 +11183,20 @@ def test_suspend_instances_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.suspend_instances(**mock_args) + client.stop_instances(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/suspendInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/stopInstances" % client.transport._host, args[1], ) -def test_suspend_instances_rest_flattened_error(transport: str = "rest"): +def test_stop_instances_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -11191,18 +11205,18 @@ def test_suspend_instances_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.suspend_instances( - compute.SuspendInstancesInstanceGroupManagerRequest(), + client.stop_instances( + compute.StopInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_suspend_instances_request_resource=compute.InstanceGroupManagersSuspendInstancesRequest( - force_suspend=True + instance_group_managers_stop_instances_request_resource=compute.InstanceGroupManagersStopInstancesRequest( + force_stop=True ), ) -def test_suspend_instances_unary_rest_use_cached_wrapped_rpc(): +def test_stop_instances_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -11216,19 +11230,17 @@ def test_suspend_instances_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.suspend_instances in client._transport._wrapped_methods + assert client._transport.stop_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.suspend_instances] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.stop_instances] = mock_rpc request = {} - client.suspend_instances_unary(request) + client.stop_instances_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -11237,15 +11249,15 @@ def test_suspend_instances_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.suspend_instances_unary(request) + client.stop_instances_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_suspend_instances_unary_rest_required_fields( - request_type=compute.SuspendInstancesInstanceGroupManagerRequest, +def test_stop_instances_unary_rest_required_fields( + request_type=compute.StopInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -11263,7 +11275,7 @@ def test_suspend_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).suspend_instances._get_unset_required_fields(jsonified_request) + ).stop_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -11274,7 +11286,7 @@ def test_suspend_instances_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).suspend_instances._get_unset_required_fields(jsonified_request) + ).stop_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -11323,25 +11335,25 @@ def test_suspend_instances_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.suspend_instances_unary(request) + response = client.stop_instances_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_suspend_instances_unary_rest_unset_required_fields(): +def test_stop_instances_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.suspend_instances._get_unset_required_fields({}) + unset_fields = transport.stop_instances._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersSuspendInstancesRequestResource", + "instanceGroupManagersStopInstancesRequestResource", "project", "zone", ) @@ -11349,7 +11361,7 @@ def test_suspend_instances_unary_rest_unset_required_fields(): ) -def test_suspend_instances_unary_rest_flattened(): +def test_stop_instances_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -11372,8 +11384,8 @@ def test_suspend_instances_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_suspend_instances_request_resource=compute.InstanceGroupManagersSuspendInstancesRequest( - force_suspend=True + instance_group_managers_stop_instances_request_resource=compute.InstanceGroupManagersStopInstancesRequest( + force_stop=True ), ) mock_args.update(sample_request) @@ -11388,20 +11400,20 @@ def test_suspend_instances_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.suspend_instances_unary(**mock_args) + client.stop_instances_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/suspendInstances" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/stopInstances" % client.transport._host, args[1], ) -def test_suspend_instances_unary_rest_flattened_error(transport: str = "rest"): +def test_stop_instances_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -11410,18 +11422,18 @@ def test_suspend_instances_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.suspend_instances_unary( - compute.SuspendInstancesInstanceGroupManagerRequest(), + client.stop_instances_unary( + compute.StopInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_suspend_instances_request_resource=compute.InstanceGroupManagersSuspendInstancesRequest( - force_suspend=True + instance_group_managers_stop_instances_request_resource=compute.InstanceGroupManagersStopInstancesRequest( + force_stop=True ), ) -def test_test_iam_permissions_rest_use_cached_wrapped_rpc(): +def test_suspend_instances_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -11435,40 +11447,42 @@ def test_test_iam_permissions_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.test_iam_permissions in client._transport._wrapped_methods - ) + assert client._transport.suspend_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.test_iam_permissions] = ( + client._transport._wrapped_methods[client._transport.suspend_instances] = ( mock_rpc ) request = {} - client.test_iam_permissions(request) + client.suspend_instances(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.test_iam_permissions(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.suspend_instances(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_test_iam_permissions_rest_required_fields( - request_type=compute.TestIamPermissionsInstanceGroupManagerRequest, +def test_suspend_instances_rest_required_fields( + request_type=compute.SuspendInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} + request_init["instance_group_manager"] = "" request_init["project"] = "" - request_init["resource"] = "" request_init["zone"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) @@ -11480,25 +11494,27 @@ def test_test_iam_permissions_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).test_iam_permissions._get_unset_required_fields(jsonified_request) + ).suspend_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present + jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" - jsonified_request["resource"] = "resource_value" jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).test_iam_permissions._get_unset_required_fields(jsonified_request) + ).suspend_instances._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone + assert "instanceGroupManager" in jsonified_request + assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" - assert "resource" in jsonified_request - assert jsonified_request["resource"] == "resource_value" assert "zone" in jsonified_request assert jsonified_request["zone"] == "zone_value" @@ -11509,7 +11525,7 @@ def test_test_iam_permissions_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.TestPermissionsResponse() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -11531,40 +11547,40 @@ def test_test_iam_permissions_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.TestPermissionsResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.test_iam_permissions(request) + response = client.suspend_instances(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_test_iam_permissions_rest_unset_required_fields(): +def test_suspend_instances_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.test_iam_permissions._get_unset_required_fields({}) + unset_fields = transport.suspend_instances._get_unset_required_fields({}) assert set(unset_fields) == ( - set(()) + set(("requestId",)) & set( ( + "instanceGroupManager", + "instanceGroupManagersSuspendInstancesRequestResource", "project", - "resource", - "testPermissionsRequestResource", "zone", ) ) ) -def test_test_iam_permissions_rest_flattened(): +def test_suspend_instances_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -11573,22 +11589,22 @@ def test_test_iam_permissions_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.TestPermissionsResponse() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = { "project": "sample1", "zone": "sample2", - "resource": "sample3", + "instance_group_manager": "sample3", } # get truthy value for each flattened field mock_args = dict( project="project_value", zone="zone_value", - resource="resource_value", - test_permissions_request_resource=compute.TestPermissionsRequest( - permissions=["permissions_value"] + instance_group_manager="instance_group_manager_value", + instance_group_managers_suspend_instances_request_resource=compute.InstanceGroupManagersSuspendInstancesRequest( + force_suspend=True ), ) mock_args.update(sample_request) @@ -11597,26 +11613,26 @@ def test_test_iam_permissions_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.TestPermissionsResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.test_iam_permissions(**mock_args) + client.suspend_instances(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{resource}/testIamPermissions" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/suspendInstances" % client.transport._host, args[1], ) -def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): +def test_suspend_instances_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -11625,18 +11641,18 @@ def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.test_iam_permissions( - compute.TestIamPermissionsInstanceGroupManagerRequest(), + client.suspend_instances( + compute.SuspendInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", - resource="resource_value", - test_permissions_request_resource=compute.TestPermissionsRequest( - permissions=["permissions_value"] + instance_group_manager="instance_group_manager_value", + instance_group_managers_suspend_instances_request_resource=compute.InstanceGroupManagersSuspendInstancesRequest( + force_suspend=True ), ) -def test_update_rest_use_cached_wrapped_rpc(): +def test_suspend_instances_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -11650,17 +11666,19 @@ def test_update_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.update in client._transport._wrapped_methods + assert client._transport.suspend_instances in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.update] = mock_rpc + client._transport._wrapped_methods[client._transport.suspend_instances] = ( + mock_rpc + ) request = {} - client.update(request) + client.suspend_instances_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -11669,15 +11687,15 @@ def test_update_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.update(request) + client.suspend_instances_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_update_rest_required_fields( - request_type=compute.UpdateInstanceGroupManagerRequest, +def test_suspend_instances_unary_rest_required_fields( + request_type=compute.SuspendInstancesInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -11695,7 +11713,7 @@ def test_update_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update._get_unset_required_fields(jsonified_request) + ).suspend_instances._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -11706,7 +11724,7 @@ def test_update_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update._get_unset_required_fields(jsonified_request) + ).suspend_instances._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -11738,7 +11756,7 @@ def test_update_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "put", + "method": "post", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -11755,25 +11773,25 @@ def test_update_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.update(request) + response = client.suspend_instances_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_update_rest_unset_required_fields(): +def test_suspend_instances_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.update._get_unset_required_fields({}) + unset_fields = transport.suspend_instances._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagerResource", + "instanceGroupManagersSuspendInstancesRequestResource", "project", "zone", ) @@ -11781,7 +11799,7 @@ def test_update_rest_unset_required_fields(): ) -def test_update_rest_flattened(): +def test_suspend_instances_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -11804,12 +11822,8 @@ def test_update_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) + instance_group_managers_suspend_instances_request_resource=compute.InstanceGroupManagersSuspendInstancesRequest( + force_suspend=True ), ) mock_args.update(sample_request) @@ -11824,20 +11838,20 @@ def test_update_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.update(**mock_args) + client.suspend_instances_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/suspendInstances" % client.transport._host, args[1], ) -def test_update_rest_flattened_error(transport: str = "rest"): +def test_suspend_instances_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -11846,22 +11860,18 @@ def test_update_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.update( - compute.UpdateInstanceGroupManagerRequest(), + client.suspend_instances_unary( + compute.SuspendInstancesInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) + instance_group_managers_suspend_instances_request_resource=compute.InstanceGroupManagersSuspendInstancesRequest( + force_suspend=True ), ) -def test_update_unary_rest_use_cached_wrapped_rpc(): +def test_test_iam_permissions_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -11875,40 +11885,40 @@ def test_update_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.update in client._transport._wrapped_methods + assert ( + client._transport.test_iam_permissions in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.update] = mock_rpc + client._transport._wrapped_methods[client._transport.test_iam_permissions] = ( + mock_rpc + ) request = {} - client.update_unary(request) + client.test_iam_permissions(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.update_unary(request) + client.test_iam_permissions(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_update_unary_rest_required_fields( - request_type=compute.UpdateInstanceGroupManagerRequest, +def test_test_iam_permissions_rest_required_fields( + request_type=compute.TestIamPermissionsInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport request_init = {} - request_init["instance_group_manager"] = "" request_init["project"] = "" + request_init["resource"] = "" request_init["zone"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) @@ -11920,27 +11930,25 @@ def test_update_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update._get_unset_required_fields(jsonified_request) + ).test_iam_permissions._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present - jsonified_request["instanceGroupManager"] = "instance_group_manager_value" jsonified_request["project"] = "project_value" + jsonified_request["resource"] = "resource_value" jsonified_request["zone"] = "zone_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update._get_unset_required_fields(jsonified_request) - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + ).test_iam_permissions._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone - assert "instanceGroupManager" in jsonified_request - assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" assert "project" in jsonified_request assert jsonified_request["project"] == "project_value" + assert "resource" in jsonified_request + assert jsonified_request["resource"] == "resource_value" assert "zone" in jsonified_request assert jsonified_request["zone"] == "zone_value" @@ -11951,7 +11959,7 @@ def test_update_unary_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.TestPermissionsResponse() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -11963,7 +11971,7 @@ def test_update_unary_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "put", + "method": "post", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -11973,40 +11981,40 @@ def test_update_unary_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.TestPermissionsResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.update_unary(request) + response = client.test_iam_permissions(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_update_unary_rest_unset_required_fields(): +def test_test_iam_permissions_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.update._get_unset_required_fields({}) + unset_fields = transport.test_iam_permissions._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set(()) & set( ( - "instanceGroupManager", - "instanceGroupManagerResource", "project", + "resource", + "testPermissionsRequestResource", "zone", ) ) ) -def test_update_unary_rest_flattened(): +def test_test_iam_permissions_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -12015,26 +12023,22 @@ def test_update_unary_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.TestPermissionsResponse() # get arguments that satisfy an http rule for this method sample_request = { "project": "sample1", "zone": "sample2", - "instance_group_manager": "sample3", + "resource": "sample3", } # get truthy value for each flattened field mock_args = dict( project="project_value", zone="zone_value", - instance_group_manager="instance_group_manager_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) + resource="resource_value", + test_permissions_request_resource=compute.TestPermissionsRequest( + permissions=["permissions_value"] ), ) mock_args.update(sample_request) @@ -12043,26 +12047,26 @@ def test_update_unary_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.TestPermissionsResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.update_unary(**mock_args) + client.test_iam_permissions(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{resource}/testIamPermissions" % client.transport._host, args[1], ) -def test_update_unary_rest_flattened_error(transport: str = "rest"): +def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -12071,22 +12075,18 @@ def test_update_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.update_unary( - compute.UpdateInstanceGroupManagerRequest(), + client.test_iam_permissions( + compute.TestIamPermissionsInstanceGroupManagerRequest(), project="project_value", zone="zone_value", - instance_group_manager="instance_group_manager_value", - instance_group_manager_resource=compute.InstanceGroupManager( - all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( - properties=compute.InstancePropertiesPatch( - labels={"key_value": "value_value"} - ) - ) + resource="resource_value", + test_permissions_request_resource=compute.TestPermissionsRequest( + permissions=["permissions_value"] ), ) -def test_update_per_instance_configs_rest_use_cached_wrapped_rpc(): +def test_update_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -12100,22 +12100,17 @@ def test_update_per_instance_configs_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.update_per_instance_configs - in client._transport._wrapped_methods - ) + assert client._transport.update in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[ - client._transport.update_per_instance_configs - ] = mock_rpc + client._transport._wrapped_methods[client._transport.update] = mock_rpc request = {} - client.update_per_instance_configs(request) + client.update(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -12124,15 +12119,15 @@ def test_update_per_instance_configs_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.update_per_instance_configs(request) + client.update(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_update_per_instance_configs_rest_required_fields( - request_type=compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest, +def test_update_rest_required_fields( + request_type=compute.UpdateInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -12150,7 +12145,7 @@ def test_update_per_instance_configs_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update_per_instance_configs._get_unset_required_fields(jsonified_request) + ).update._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -12161,7 +12156,7 @@ def test_update_per_instance_configs_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update_per_instance_configs._get_unset_required_fields(jsonified_request) + ).update._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -12193,7 +12188,7 @@ def test_update_per_instance_configs_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "put", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -12210,25 +12205,25 @@ def test_update_per_instance_configs_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.update_per_instance_configs(request) + response = client.update(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_update_per_instance_configs_rest_unset_required_fields(): +def test_update_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.update_per_instance_configs._get_unset_required_fields({}) + unset_fields = transport.update._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersUpdatePerInstanceConfigsReqResource", + "instanceGroupManagerResource", "project", "zone", ) @@ -12236,7 +12231,7 @@ def test_update_per_instance_configs_rest_unset_required_fields(): ) -def test_update_per_instance_configs_rest_flattened(): +def test_update_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -12259,10 +12254,12 @@ def test_update_per_instance_configs_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq( - per_instance_configs=[ - compute.PerInstanceConfig(fingerprint="fingerprint_value") - ] + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) mock_args.update(sample_request) @@ -12277,20 +12274,20 @@ def test_update_per_instance_configs_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.update_per_instance_configs(**mock_args) + client.update(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/updatePerInstanceConfigs" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" % client.transport._host, args[1], ) -def test_update_per_instance_configs_rest_flattened_error(transport: str = "rest"): +def test_update_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -12299,20 +12296,22 @@ def test_update_per_instance_configs_rest_flattened_error(transport: str = "rest # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.update_per_instance_configs( - compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest(), + client.update( + compute.UpdateInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq( - per_instance_configs=[ - compute.PerInstanceConfig(fingerprint="fingerprint_value") - ] + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) -def test_update_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): +def test_update_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -12326,22 +12325,17 @@ def test_update_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.update_per_instance_configs - in client._transport._wrapped_methods - ) + assert client._transport.update in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[ - client._transport.update_per_instance_configs - ] = mock_rpc + client._transport._wrapped_methods[client._transport.update] = mock_rpc request = {} - client.update_per_instance_configs_unary(request) + client.update_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -12350,15 +12344,15 @@ def test_update_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.update_per_instance_configs_unary(request) + client.update_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_update_per_instance_configs_unary_rest_required_fields( - request_type=compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest, +def test_update_unary_rest_required_fields( + request_type=compute.UpdateInstanceGroupManagerRequest, ): transport_class = transports.InstanceGroupManagersRestTransport @@ -12376,7 +12370,7 @@ def test_update_per_instance_configs_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update_per_instance_configs._get_unset_required_fields(jsonified_request) + ).update._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -12387,7 +12381,7 @@ def test_update_per_instance_configs_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update_per_instance_configs._get_unset_required_fields(jsonified_request) + ).update._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -12419,7 +12413,7 @@ def test_update_per_instance_configs_unary_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "put", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -12436,25 +12430,25 @@ def test_update_per_instance_configs_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.update_per_instance_configs_unary(request) + response = client.update_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_update_per_instance_configs_unary_rest_unset_required_fields(): +def test_update_unary_rest_unset_required_fields(): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.update_per_instance_configs._get_unset_required_fields({}) + unset_fields = transport.update._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( "instanceGroupManager", - "instanceGroupManagersUpdatePerInstanceConfigsReqResource", + "instanceGroupManagerResource", "project", "zone", ) @@ -12462,7 +12456,7 @@ def test_update_per_instance_configs_unary_rest_unset_required_fields(): ) -def test_update_per_instance_configs_unary_rest_flattened(): +def test_update_unary_rest_flattened(): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -12485,10 +12479,12 @@ def test_update_per_instance_configs_unary_rest_flattened(): project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq( - per_instance_configs=[ - compute.PerInstanceConfig(fingerprint="fingerprint_value") - ] + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) mock_args.update(sample_request) @@ -12503,22 +12499,20 @@ def test_update_per_instance_configs_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.update_per_instance_configs_unary(**mock_args) + client.update_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/updatePerInstanceConfigs" + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}" % client.transport._host, args[1], ) -def test_update_per_instance_configs_unary_rest_flattened_error( - transport: str = "rest", -): +def test_update_unary_rest_flattened_error(transport: str = "rest"): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -12527,103 +12521,963 @@ def test_update_per_instance_configs_unary_rest_flattened_error( # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.update_per_instance_configs_unary( - compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest(), + client.update_unary( + compute.UpdateInstanceGroupManagerRequest(), project="project_value", zone="zone_value", instance_group_manager="instance_group_manager_value", - instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq( - per_instance_configs=[ - compute.PerInstanceConfig(fingerprint="fingerprint_value") - ] + instance_group_manager_resource=compute.InstanceGroupManager( + all_instances_config=compute.InstanceGroupManagerAllInstancesConfig( + properties=compute.InstancePropertiesPatch( + labels={"key_value": "value_value"} + ) + ) ), ) -def test_credentials_transport_error(): - # It is an error to provide credentials and a transport instance. - transport = transports.InstanceGroupManagersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): +def test_update_per_instance_configs_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + transport="rest", ) - # It is an error to provide a credentials file and a transport instance. - transport = transports.InstanceGroupManagersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = InstanceGroupManagersClient( - client_options={"credentials_file": "credentials.json"}, - transport=transport, - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # It is an error to provide an api_key and a transport instance. - transport = transports.InstanceGroupManagersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = InstanceGroupManagersClient( - client_options=options, - transport=transport, + # Ensure method has been cached + assert ( + client._transport.update_per_instance_configs + in client._transport._wrapped_methods ) - # It is an error to provide an api_key and a credential. - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = InstanceGroupManagersClient( - client_options=options, credentials=ga_credentials.AnonymousCredentials() + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. ) + client._transport._wrapped_methods[ + client._transport.update_per_instance_configs + ] = mock_rpc - # It is an error to provide scopes and a transport instance. - transport = transports.InstanceGroupManagersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = InstanceGroupManagersClient( - client_options={"scopes": ["1", "2"]}, - transport=transport, - ) + request = {} + client.update_per_instance_configs(request) + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 -def test_transport_instance(): - # A client may be instantiated with a custom transport instance. - transport = transports.InstanceGroupManagersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_per_instance_configs(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_update_per_instance_configs_rest_required_fields( + request_type=compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest, +): + transport_class = transports.InstanceGroupManagersRestTransport + + request_init = {} + request_init["instance_group_manager"] = "" + request_init["project"] = "" + request_init["zone"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) ) - client = InstanceGroupManagersClient(transport=transport) - assert client.transport is transport + # verify fields with default values are dropped -@pytest.mark.parametrize( - "transport_class", - [ - transports.InstanceGroupManagersRestTransport, - ], -) -def test_transport_adc(transport_class): - # Test default credentials are used if not provided. - with mock.patch.object(google.auth, "default") as adc: - adc.return_value = (ga_credentials.AnonymousCredentials(), None) - transport_class() - adc.assert_called_once() + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_per_instance_configs._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["instanceGroupManager"] = "instance_group_manager_value" + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_per_instance_configs._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + # verify required fields with non-default values are left alone + assert "instanceGroupManager" in jsonified_request + assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.update_per_instance_configs(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_update_per_instance_configs_rest_unset_required_fields(): + transport = transports.InstanceGroupManagersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.update_per_instance_configs._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "instanceGroupManager", + "instanceGroupManagersUpdatePerInstanceConfigsReqResource", + "project", + "zone", + ) + ) + ) + + +def test_update_per_instance_configs_rest_flattened(): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "zone": "sample2", + "instance_group_manager": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_value", + instance_group_manager="instance_group_manager_value", + instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq( + per_instance_configs=[ + compute.PerInstanceConfig(fingerprint="fingerprint_value") + ] + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.update_per_instance_configs(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/updatePerInstanceConfigs" + % client.transport._host, + args[1], + ) + + +def test_update_per_instance_configs_rest_flattened_error(transport: str = "rest"): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.update_per_instance_configs( + compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest(), + project="project_value", + zone="zone_value", + instance_group_manager="instance_group_manager_value", + instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq( + per_instance_configs=[ + compute.PerInstanceConfig(fingerprint="fingerprint_value") + ] + ), + ) + + +def test_update_per_instance_configs_unary_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._transport.update_per_instance_configs + in client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[ + client._transport.update_per_instance_configs + ] = mock_rpc + + request = {} + client.update_per_instance_configs_unary(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_per_instance_configs_unary(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_update_per_instance_configs_unary_rest_required_fields( + request_type=compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest, +): + transport_class = transports.InstanceGroupManagersRestTransport + + request_init = {} + request_init["instance_group_manager"] = "" + request_init["project"] = "" + request_init["zone"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_per_instance_configs._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["instanceGroupManager"] = "instance_group_manager_value" + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_per_instance_configs._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "instanceGroupManager" in jsonified_request + assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.update_per_instance_configs_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_update_per_instance_configs_unary_rest_unset_required_fields(): + transport = transports.InstanceGroupManagersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.update_per_instance_configs._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "instanceGroupManager", + "instanceGroupManagersUpdatePerInstanceConfigsReqResource", + "project", + "zone", + ) + ) + ) + + +def test_update_per_instance_configs_unary_rest_flattened(): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "zone": "sample2", + "instance_group_manager": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_value", + instance_group_manager="instance_group_manager_value", + instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq( + per_instance_configs=[ + compute.PerInstanceConfig(fingerprint="fingerprint_value") + ] + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.update_per_instance_configs_unary(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/updatePerInstanceConfigs" + % client.transport._host, + args[1], + ) + + +def test_update_per_instance_configs_unary_rest_flattened_error( + transport: str = "rest", +): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.update_per_instance_configs_unary( + compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest(), + project="project_value", + zone="zone_value", + instance_group_manager="instance_group_manager_value", + instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq( + per_instance_configs=[ + compute.PerInstanceConfig(fingerprint="fingerprint_value") + ] + ), + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.InstanceGroupManagersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.InstanceGroupManagersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = InstanceGroupManagersClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.InstanceGroupManagersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = InstanceGroupManagersClient( + client_options=options, + transport=transport, + ) + + # It is an error to provide an api_key and a credential. + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = InstanceGroupManagersClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.InstanceGroupManagersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = InstanceGroupManagersClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.InstanceGroupManagersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = InstanceGroupManagersClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.InstanceGroupManagersRestTransport, + ], +) +def test_transport_adc(transport_class): + # Test default credentials are used if not provided. + with mock.patch.object(google.auth, "default") as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport_class() + adc.assert_called_once() + + +def test_transport_kind_rest(): + transport = InstanceGroupManagersClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_abandon_instances_rest_bad_request( + request_type=compute.AbandonInstancesInstanceGroupManagerRequest, +): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "zone": "sample2", + "instance_group_manager": "sample3", + } + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.abandon_instances(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.AbandonInstancesInstanceGroupManagerRequest, + dict, + ], +) +def test_abandon_instances_rest_call_success(request_type): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "zone": "sample2", + "instance_group_manager": "sample3", + } + request_init["instance_group_managers_abandon_instances_request_resource"] = { + "instances": ["instances_value1", "instances_value2"] + } + # The version of a generated dependency at test runtime may differ from the version used during generation. + # Delete any fields which are not present in the current runtime dependency + # See https://github.com/googleapis/gapic-generator-python/issues/1748 + + # Determine if the message type is proto-plus or protobuf + test_field = compute.AbandonInstancesInstanceGroupManagerRequest.meta.fields[ + "instance_group_managers_abandon_instances_request_resource" + ] + + def get_message_fields(field): + # Given a field which is a message (composite type), return a list with + # all the fields of the message. + # If the field is not a composite type, return an empty list. + message_fields = [] + + if hasattr(field, "message") and field.message: + is_field_type_proto_plus_type = not hasattr(field.message, "DESCRIPTOR") + + if is_field_type_proto_plus_type: + message_fields = field.message.meta.fields.values() + # Add `# pragma: NO COVER` because there may not be any `*_pb2` field types + else: # pragma: NO COVER + message_fields = field.message.DESCRIPTOR.fields + return message_fields + + runtime_nested_fields = [ + (field.name, nested_field.name) + for field in get_message_fields(test_field) + for nested_field in get_message_fields(field) + ] + + subfields_not_in_runtime = [] + + # For each item in the sample request, create a list of sub fields which are not present at runtime + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for field, value in request_init[ + "instance_group_managers_abandon_instances_request_resource" + ].items(): # pragma: NO COVER + result = None + is_repeated = False + # For repeated fields + if isinstance(value, list) and len(value): + is_repeated = True + result = value[0] + # For fields where the type is another message + if isinstance(value, dict): + result = value + + if result and hasattr(result, "keys"): + for subfield in result.keys(): + if (field, subfield) not in runtime_nested_fields: + subfields_not_in_runtime.append( + { + "field": field, + "subfield": subfield, + "is_repeated": is_repeated, + } + ) + + # Remove fields from the sample request which are not present in the runtime version of the dependency + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for subfield_to_delete in subfields_not_in_runtime: # pragma: NO COVER + field = subfield_to_delete.get("field") + field_repeated = subfield_to_delete.get("is_repeated") + subfield = subfield_to_delete.get("subfield") + if subfield: + if field_repeated: + for i in range( + 0, + len( + request_init[ + "instance_group_managers_abandon_instances_request_resource" + ][field] + ), + ): + del request_init[ + "instance_group_managers_abandon_instances_request_resource" + ][field][i][subfield] + else: + del request_init[ + "instance_group_managers_abandon_instances_request_resource" + ][field][subfield] + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation( + client_operation_id="client_operation_id_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + end_time="end_time_value", + http_error_message="http_error_message_value", + http_error_status_code=2374, + id=205, + insert_time="insert_time_value", + kind="kind_value", + name="name_value", + operation_group_id="operation_group_id_value", + operation_type="operation_type_value", + progress=885, + region="region_value", + self_link="self_link_value", + start_time="start_time_value", + status=compute.Operation.Status.DONE, + status_message="status_message_value", + target_id=947, + target_link="target_link_value", + user="user_value", + zone="zone_value", + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.abandon_instances(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, extended_operation.ExtendedOperation) + assert response.client_operation_id == "client_operation_id_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.end_time == "end_time_value" + assert response.http_error_message == "http_error_message_value" + assert response.http_error_status_code == 2374 + assert response.id == 205 + assert response.insert_time == "insert_time_value" + assert response.kind == "kind_value" + assert response.name == "name_value" + assert response.operation_group_id == "operation_group_id_value" + assert response.operation_type == "operation_type_value" + assert response.progress == 885 + assert response.region == "region_value" + assert response.self_link == "self_link_value" + assert response.start_time == "start_time_value" + assert response.status == compute.Operation.Status.DONE + assert response.status_message == "status_message_value" + assert response.target_id == 947 + assert response.target_link == "target_link_value" + assert response.user == "user_value" + assert response.zone == "zone_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_abandon_instances_rest_interceptors(null_interceptor): + transport = transports.InstanceGroupManagersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.InstanceGroupManagersRestInterceptor(), + ) + client = InstanceGroupManagersClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.InstanceGroupManagersRestInterceptor, "post_abandon_instances" + ) as post, mock.patch.object( + transports.InstanceGroupManagersRestInterceptor, + "post_abandon_instances_with_metadata", + ) as post_with_metadata, mock.patch.object( + transports.InstanceGroupManagersRestInterceptor, "pre_abandon_instances" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.AbandonInstancesInstanceGroupManagerRequest.pb( + compute.AbandonInstancesInstanceGroupManagerRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.Operation.to_json(compute.Operation()) + req.return_value.content = return_value + + request = compute.AbandonInstancesInstanceGroupManagerRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.abandon_instances( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_aggregated_list_rest_bad_request( + request_type=compute.AggregatedListInstanceGroupManagersRequest, +): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.aggregated_list(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.AggregatedListInstanceGroupManagersRequest, + dict, + ], +) +def test_aggregated_list_rest_call_success(request_type): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.InstanceGroupManagerAggregatedList( + id="id_value", + kind="kind_value", + next_page_token="next_page_token_value", + self_link="self_link_value", + unreachables=["unreachables_value"], + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.InstanceGroupManagerAggregatedList.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.aggregated_list(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.AggregatedListPager) + assert response.id == "id_value" + assert response.kind == "kind_value" + assert response.next_page_token == "next_page_token_value" + assert response.self_link == "self_link_value" + assert response.unreachables == ["unreachables_value"] + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_aggregated_list_rest_interceptors(null_interceptor): + transport = transports.InstanceGroupManagersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.InstanceGroupManagersRestInterceptor(), + ) + client = InstanceGroupManagersClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.InstanceGroupManagersRestInterceptor, "post_aggregated_list" + ) as post, mock.patch.object( + transports.InstanceGroupManagersRestInterceptor, + "post_aggregated_list_with_metadata", + ) as post_with_metadata, mock.patch.object( + transports.InstanceGroupManagersRestInterceptor, "pre_aggregated_list" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.AggregatedListInstanceGroupManagersRequest.pb( + compute.AggregatedListInstanceGroupManagersRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.InstanceGroupManagerAggregatedList.to_json( + compute.InstanceGroupManagerAggregatedList() + ) + req.return_value.content = return_value + + request = compute.AggregatedListInstanceGroupManagersRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.InstanceGroupManagerAggregatedList() + post_with_metadata.return_value = ( + compute.InstanceGroupManagerAggregatedList(), + metadata, + ) + + client.aggregated_list( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) -def test_transport_kind_rest(): - transport = InstanceGroupManagersClient.get_transport_class("rest")( - credentials=ga_credentials.AnonymousCredentials() - ) - assert transport.kind == "rest" + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() -def test_abandon_instances_rest_bad_request( - request_type=compute.AbandonInstancesInstanceGroupManagerRequest, +def test_apply_updates_to_instances_rest_bad_request( + request_type=compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest, ): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -12648,17 +13502,17 @@ def test_abandon_instances_rest_bad_request( response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.abandon_instances(request) + client.apply_updates_to_instances(request) @pytest.mark.parametrize( "request_type", [ - compute.AbandonInstancesInstanceGroupManagerRequest, + compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest, dict, ], ) -def test_abandon_instances_rest_call_success(request_type): +def test_apply_updates_to_instances_rest_call_success(request_type): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -12669,16 +13523,19 @@ def test_abandon_instances_rest_call_success(request_type): "zone": "sample2", "instance_group_manager": "sample3", } - request_init["instance_group_managers_abandon_instances_request_resource"] = { - "instances": ["instances_value1", "instances_value2"] + request_init["instance_group_managers_apply_updates_request_resource"] = { + "all_instances": True, + "instances": ["instances_value1", "instances_value2"], + "minimal_action": "minimal_action_value", + "most_disruptive_allowed_action": "most_disruptive_allowed_action_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency # See https://github.com/googleapis/gapic-generator-python/issues/1748 # Determine if the message type is proto-plus or protobuf - test_field = compute.AbandonInstancesInstanceGroupManagerRequest.meta.fields[ - "instance_group_managers_abandon_instances_request_resource" + test_field = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest.meta.fields[ + "instance_group_managers_apply_updates_request_resource" ] def get_message_fields(field): @@ -12708,7 +13565,7 @@ def get_message_fields(field): # For each item in the sample request, create a list of sub fields which are not present at runtime # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime for field, value in request_init[ - "instance_group_managers_abandon_instances_request_resource" + "instance_group_managers_apply_updates_request_resource" ].items(): # pragma: NO COVER result = None is_repeated = False @@ -12743,16 +13600,16 @@ def get_message_fields(field): 0, len( request_init[ - "instance_group_managers_abandon_instances_request_resource" + "instance_group_managers_apply_updates_request_resource" ][field] ), ): del request_init[ - "instance_group_managers_abandon_instances_request_resource" + "instance_group_managers_apply_updates_request_resource" ][field][i][subfield] else: del request_init[ - "instance_group_managers_abandon_instances_request_resource" + "instance_group_managers_apply_updates_request_resource" ][field][subfield] request = request_type(**request_init) @@ -12794,7 +13651,7 @@ def get_message_fields(field): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.abandon_instances(request) + response = client.apply_updates_to_instances(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -12823,7 +13680,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_abandon_instances_rest_interceptors(null_interceptor): +def test_apply_updates_to_instances_rest_interceptors(null_interceptor): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -12837,18 +13694,20 @@ def test_abandon_instances_rest_interceptors(null_interceptor): ) as req, mock.patch.object( path_template, "transcode" ) as transcode, mock.patch.object( - transports.InstanceGroupManagersRestInterceptor, "post_abandon_instances" + transports.InstanceGroupManagersRestInterceptor, + "post_apply_updates_to_instances", ) as post, mock.patch.object( transports.InstanceGroupManagersRestInterceptor, - "post_abandon_instances_with_metadata", + "post_apply_updates_to_instances_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.InstanceGroupManagersRestInterceptor, "pre_abandon_instances" + transports.InstanceGroupManagersRestInterceptor, + "pre_apply_updates_to_instances", ) as pre: pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.AbandonInstancesInstanceGroupManagerRequest.pb( - compute.AbandonInstancesInstanceGroupManagerRequest() + pb_message = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest.pb( + compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest() ) transcode.return_value = { "method": "post", @@ -12863,7 +13722,7 @@ def test_abandon_instances_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.AbandonInstancesInstanceGroupManagerRequest() + request = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -12872,148 +13731,7 @@ def test_abandon_instances_rest_interceptors(null_interceptor): post.return_value = compute.Operation() post_with_metadata.return_value = compute.Operation(), metadata - client.abandon_instances( - request, - metadata=[ - ("key", "val"), - ("cephalopod", "squid"), - ], - ) - - pre.assert_called_once() - post.assert_called_once() - post_with_metadata.assert_called_once() - - -def test_aggregated_list_rest_bad_request( - request_type=compute.AggregatedListInstanceGroupManagersRequest, -): - client = InstanceGroupManagersClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) - # send a request that will satisfy transcoding - request_init = {"project": "sample1"} - request = request_type(**request_init) - - # Mock the http request call within the method and fake a BadRequest error. - with mock.patch.object(Session, "request") as req, pytest.raises( - core_exceptions.BadRequest - ): - # Wrap the value into a proper Response obj - response_value = mock.Mock() - json_return_value = "" - response_value.json = mock.Mock(return_value={}) - response_value.status_code = 400 - response_value.request = mock.Mock() - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.aggregated_list(request) - - -@pytest.mark.parametrize( - "request_type", - [ - compute.AggregatedListInstanceGroupManagersRequest, - dict, - ], -) -def test_aggregated_list_rest_call_success(request_type): - client = InstanceGroupManagersClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) - - # send a request that will satisfy transcoding - request_init = {"project": "sample1"} - request = request_type(**request_init) - - # Mock the http request call within the method and fake a response. - with mock.patch.object(type(client.transport._session), "request") as req: - # Designate an appropriate value for the returned response. - return_value = compute.InstanceGroupManagerAggregatedList( - id="id_value", - kind="kind_value", - next_page_token="next_page_token_value", - self_link="self_link_value", - unreachables=["unreachables_value"], - ) - - # Wrap the value into a proper Response obj - response_value = mock.Mock() - response_value.status_code = 200 - - # Convert return value to protobuf type - return_value = compute.InstanceGroupManagerAggregatedList.pb(return_value) - json_return_value = json_format.MessageToJson(return_value) - response_value.content = json_return_value.encode("UTF-8") - req.return_value = response_value - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.aggregated_list(request) - - # Establish that the response is the type that we expect. - assert isinstance(response, pagers.AggregatedListPager) - assert response.id == "id_value" - assert response.kind == "kind_value" - assert response.next_page_token == "next_page_token_value" - assert response.self_link == "self_link_value" - assert response.unreachables == ["unreachables_value"] - - -@pytest.mark.parametrize("null_interceptor", [True, False]) -def test_aggregated_list_rest_interceptors(null_interceptor): - transport = transports.InstanceGroupManagersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - interceptor=None - if null_interceptor - else transports.InstanceGroupManagersRestInterceptor(), - ) - client = InstanceGroupManagersClient(transport=transport) - - with mock.patch.object( - type(client.transport._session), "request" - ) as req, mock.patch.object( - path_template, "transcode" - ) as transcode, mock.patch.object( - transports.InstanceGroupManagersRestInterceptor, "post_aggregated_list" - ) as post, mock.patch.object( - transports.InstanceGroupManagersRestInterceptor, - "post_aggregated_list_with_metadata", - ) as post_with_metadata, mock.patch.object( - transports.InstanceGroupManagersRestInterceptor, "pre_aggregated_list" - ) as pre: - pre.assert_not_called() - post.assert_not_called() - post_with_metadata.assert_not_called() - pb_message = compute.AggregatedListInstanceGroupManagersRequest.pb( - compute.AggregatedListInstanceGroupManagersRequest() - ) - transcode.return_value = { - "method": "post", - "uri": "my_uri", - "body": pb_message, - "query_params": pb_message, - } - - req.return_value = mock.Mock() - req.return_value.status_code = 200 - req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - return_value = compute.InstanceGroupManagerAggregatedList.to_json( - compute.InstanceGroupManagerAggregatedList() - ) - req.return_value.content = return_value - - request = compute.AggregatedListInstanceGroupManagersRequest() - metadata = [ - ("key", "val"), - ("cephalopod", "squid"), - ] - pre.return_value = request, metadata - post.return_value = compute.InstanceGroupManagerAggregatedList() - post_with_metadata.return_value = ( - compute.InstanceGroupManagerAggregatedList(), - metadata, - ) - - client.aggregated_list( + client.apply_updates_to_instances( request, metadata=[ ("key", "val"), @@ -13026,8 +13744,8 @@ def test_aggregated_list_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_apply_updates_to_instances_rest_bad_request( - request_type=compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest, +def test_configure_accelerator_topologies_rest_bad_request( + request_type=compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, ): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -13052,17 +13770,17 @@ def test_apply_updates_to_instances_rest_bad_request( response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.apply_updates_to_instances(request) + client.configure_accelerator_topologies(request) @pytest.mark.parametrize( "request_type", [ - compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest, + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest, dict, ], ) -def test_apply_updates_to_instances_rest_call_success(request_type): +def test_configure_accelerator_topologies_rest_call_success(request_type): client = InstanceGroupManagersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -13073,20 +13791,19 @@ def test_apply_updates_to_instances_rest_call_success(request_type): "zone": "sample2", "instance_group_manager": "sample3", } - request_init["instance_group_managers_apply_updates_request_resource"] = { - "all_instances": True, - "instances": ["instances_value1", "instances_value2"], - "minimal_action": "minimal_action_value", - "most_disruptive_allowed_action": "most_disruptive_allowed_action_value", - } + request_init[ + "instance_group_managers_configure_accelerator_topologies_request_resource" + ] = {"accelerator_topology_actions": {}} # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency # See https://github.com/googleapis/gapic-generator-python/issues/1748 # Determine if the message type is proto-plus or protobuf - test_field = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest.meta.fields[ - "instance_group_managers_apply_updates_request_resource" - ] + test_field = ( + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest.meta.fields[ + "instance_group_managers_configure_accelerator_topologies_request_resource" + ] + ) def get_message_fields(field): # Given a field which is a message (composite type), return a list with @@ -13115,7 +13832,7 @@ def get_message_fields(field): # For each item in the sample request, create a list of sub fields which are not present at runtime # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime for field, value in request_init[ - "instance_group_managers_apply_updates_request_resource" + "instance_group_managers_configure_accelerator_topologies_request_resource" ].items(): # pragma: NO COVER result = None is_repeated = False @@ -13150,16 +13867,16 @@ def get_message_fields(field): 0, len( request_init[ - "instance_group_managers_apply_updates_request_resource" + "instance_group_managers_configure_accelerator_topologies_request_resource" ][field] ), ): del request_init[ - "instance_group_managers_apply_updates_request_resource" + "instance_group_managers_configure_accelerator_topologies_request_resource" ][field][i][subfield] else: del request_init[ - "instance_group_managers_apply_updates_request_resource" + "instance_group_managers_configure_accelerator_topologies_request_resource" ][field][subfield] request = request_type(**request_init) @@ -13201,7 +13918,7 @@ def get_message_fields(field): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.apply_updates_to_instances(request) + response = client.configure_accelerator_topologies(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -13230,7 +13947,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_apply_updates_to_instances_rest_interceptors(null_interceptor): +def test_configure_accelerator_topologies_rest_interceptors(null_interceptor): transport = transports.InstanceGroupManagersRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -13245,19 +13962,21 @@ def test_apply_updates_to_instances_rest_interceptors(null_interceptor): path_template, "transcode" ) as transcode, mock.patch.object( transports.InstanceGroupManagersRestInterceptor, - "post_apply_updates_to_instances", + "post_configure_accelerator_topologies", ) as post, mock.patch.object( transports.InstanceGroupManagersRestInterceptor, - "post_apply_updates_to_instances_with_metadata", + "post_configure_accelerator_topologies_with_metadata", ) as post_with_metadata, mock.patch.object( transports.InstanceGroupManagersRestInterceptor, - "pre_apply_updates_to_instances", + "pre_configure_accelerator_topologies", ) as pre: pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest.pb( - compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest() + pb_message = ( + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest.pb( + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest() + ) ) transcode.return_value = { "method": "post", @@ -13272,7 +13991,7 @@ def test_apply_updates_to_instances_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest() + request = compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -13281,7 +14000,7 @@ def test_apply_updates_to_instances_rest_interceptors(null_interceptor): post.return_value = compute.Operation() post_with_metadata.return_value = compute.Operation(), metadata - client.apply_updates_to_instances( + client.configure_accelerator_topologies( request, metadata=[ ("key", "val"), @@ -14502,7 +15221,9 @@ def test_get_available_accelerator_topologies_rest_call_success(request_type): with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. return_value = ( - compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse() + compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse( + multi_mig="multi_mig_value", + ) ) # Wrap the value into a proper Response obj @@ -14525,6 +15246,7 @@ def test_get_available_accelerator_topologies_rest_call_success(request_type): assert isinstance( response, compute.InstanceGroupManagersGetAvailableAcceleratorTopologiesResponse ) + assert response.multi_mig == "multi_mig_value" @pytest.mark.parametrize("null_interceptor", [True, False]) @@ -19773,6 +20495,30 @@ def test_apply_updates_to_instances_unary_empty_call_rest(): assert args[0] == request_msg +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_configure_accelerator_topologies_unary_empty_call_rest(): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.configure_accelerator_topologies), "__call__" + ) as call: + client.configure_accelerator_topologies_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ( + compute.ConfigureAcceleratorTopologiesInstanceGroupManagerRequest() + ) + + assert args[0] == request_msg + + # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. def test_create_instances_unary_empty_call_rest(): @@ -20342,6 +21088,7 @@ def test_instance_group_managers_base_transport(): "abandon_instances", "aggregated_list", "apply_updates_to_instances", + "configure_accelerator_topologies", "create_instances", "delete", "delete_instances", @@ -20514,6 +21261,9 @@ def test_instance_group_managers_client_transport_session_collision(transport_na session1 = client1.transport.apply_updates_to_instances._session session2 = client2.transport.apply_updates_to_instances._session assert session1 != session2 + session1 = client1.transport.configure_accelerator_topologies._session + session2 = client2.transport.configure_accelerator_topologies._session + assert session1 != session2 session1 = client1.transport.create_instances._session session2 = client2.transport.create_instances._session assert session1 != session2 diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_instances.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_instances.py index fc79c33f6992..40b75bf5c697 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_instances.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_instances.py @@ -24406,7 +24406,11 @@ def test_bulk_insert_rest_call_success(request_type): "identity_certificate_enabled": True, }, }, - "location_policy": {"locations": {}, "target_shape": "target_shape_value"}, + "location_policy": { + "locations": {}, + "target_shape": "target_shape_value", + "zones": [{"zone": "zone_value"}], + }, "min_count": 972, "name_pattern": "name_pattern_value", "per_instance_properties": {}, diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_backend_services.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_backend_services.py index f29510d9b771..8e974f2f9dd3 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_backend_services.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_backend_services.py @@ -5775,6 +5775,7 @@ def test_insert_rest_call_success(request_type): "max_rate_per_endpoint": 0.22310000000000002, "max_rate_per_instance": 0.22190000000000001, "max_utilization": 0.1633, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "preference": "preference_value", "traffic_duration": "traffic_duration_value", } @@ -5897,6 +5898,7 @@ def test_insert_rest_call_success(request_type): "network_pass_through_lb_traffic_policy": { "zonal_affinity": {"spillover": "spillover_value", "spillover_ratio": 0.163} }, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "outlier_detection": { "base_ejection_time": {}, "consecutive_errors": 1956, @@ -6489,6 +6491,7 @@ def test_patch_rest_call_success(request_type): "max_rate_per_endpoint": 0.22310000000000002, "max_rate_per_instance": 0.22190000000000001, "max_utilization": 0.1633, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "preference": "preference_value", "traffic_duration": "traffic_duration_value", } @@ -6611,6 +6614,7 @@ def test_patch_rest_call_success(request_type): "network_pass_through_lb_traffic_policy": { "zonal_affinity": {"spillover": "spillover_value", "spillover_ratio": 0.163} }, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "outlier_detection": { "base_ejection_time": {}, "consecutive_errors": 1956, @@ -7650,6 +7654,7 @@ def test_update_rest_call_success(request_type): "max_rate_per_endpoint": 0.22310000000000002, "max_rate_per_instance": 0.22190000000000001, "max_utilization": 0.1633, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "preference": "preference_value", "traffic_duration": "traffic_duration_value", } @@ -7772,6 +7777,7 @@ def test_update_rest_call_success(request_type): "network_pass_through_lb_traffic_policy": { "zonal_affinity": {"spillover": "spillover_value", "spillover_ratio": 0.163} }, + "orchestration_info": {"resource_uri": "resource_uri_value"}, "outlier_detection": { "base_ejection_time": {}, "consecutive_errors": 1956, diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_commitments.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_commitments.py index 164c4da6ae44..a8e0dce4895c 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_commitments.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_commitments.py @@ -3933,6 +3933,7 @@ def test_insert_rest_call_success(request_type): "linked_commitments_value2", ], "name": "name_value", + "params": {"resource_manager_tags": {}}, "protection_tier": "protection_tier_value", "reservation_mode": "reservation_mode_value", "reservation_sharing_policy": { @@ -4661,6 +4662,7 @@ def test_update_rest_call_success(request_type): "linked_commitments_value2", ], "name": "name_value", + "params": {"resource_manager_tags": {}}, "protection_tier": "protection_tier_value", "reservation_mode": "reservation_mode_value", "reservation_sharing_policy": { @@ -5028,6 +5030,7 @@ def test_update_reservations_rest_call_success(request_type): "linked_commitments_value2", ], "name": "name_value", + "params": {"resource_manager_tags": {}}, "protection_tier": "protection_tier_value", "reservation_mode": "reservation_mode_value", "reservation_sharing_policy": { diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_disks.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_disks.py index a714430a6737..f0f723e84f76 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_disks.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_disks.py @@ -7717,6 +7717,11 @@ def test_bulk_insert_rest_call_success(request_type): "instant_snapshot_group_parameters": { "source_instant_snapshot_group": "source_instant_snapshot_group_value" }, + "snapshot_group_parameters": { + "replica_zones": ["replica_zones_value1", "replica_zones_value2"], + "source_snapshot_group": "source_snapshot_group_value", + "type_": "type__value", + }, "source_consistency_group_policy": "source_consistency_group_policy_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -7995,6 +8000,8 @@ def test_create_snapshot_rest_call_success(request_type): "rsa_encrypted_key": "rsa_encrypted_key_value", "sha256": "sha256_value", }, + "snapshot_group_id": "snapshot_group_id_value", + "snapshot_group_name": "snapshot_group_name_value", "snapshot_type": "snapshot_type_value", "source_disk": "source_disk_value", "source_disk_encryption_key": {}, diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_instances.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_instances.py index e24ff8d09fc5..0e2fd472497a 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_instances.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_instances.py @@ -1903,7 +1903,11 @@ def test_bulk_insert_rest_call_success(request_type): "identity_certificate_enabled": True, }, }, - "location_policy": {"locations": {}, "target_shape": "target_shape_value"}, + "location_policy": { + "locations": {}, + "target_shape": "target_shape_value", + "zones": [{"zone": "zone_value"}], + }, "min_count": 972, "name_pattern": "name_pattern_value", "per_instance_properties": {}, diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_snapshots.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_snapshots.py index 26a11472c901..1df1c32f153d 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_snapshots.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_snapshots.py @@ -3825,6 +3825,8 @@ def test_get_rest_call_success(request_type): satisfies_pzi=True, satisfies_pzs=True, self_link="self_link_value", + snapshot_group_id="snapshot_group_id_value", + snapshot_group_name="snapshot_group_name_value", snapshot_type="snapshot_type_value", source_disk="source_disk_value", source_disk_for_recovery_checkpoint="source_disk_for_recovery_checkpoint_value", @@ -3875,6 +3877,8 @@ def test_get_rest_call_success(request_type): assert response.satisfies_pzi is True assert response.satisfies_pzs is True assert response.self_link == "self_link_value" + assert response.snapshot_group_id == "snapshot_group_id_value" + assert response.snapshot_group_name == "snapshot_group_name_value" assert response.snapshot_type == "snapshot_type_value" assert response.source_disk == "source_disk_value" assert ( @@ -4161,6 +4165,8 @@ def test_insert_rest_call_success(request_type): "rsa_encrypted_key": "rsa_encrypted_key_value", "sha256": "sha256_value", }, + "snapshot_group_id": "snapshot_group_id_value", + "snapshot_group_name": "snapshot_group_name_value", "snapshot_type": "snapshot_type_value", "source_disk": "source_disk_value", "source_disk_encryption_key": {}, diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_reservation_sub_blocks.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_reservation_sub_blocks.py index 99c183c97ac5..1cba5d31c9fd 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_reservation_sub_blocks.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_reservation_sub_blocks.py @@ -1344,8 +1344,8 @@ def test_get_rest_flattened(): sample_request = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } # get truthy value for each flattened field @@ -1374,7 +1374,7 @@ def test_get_rest_flattened(): assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks/{reservation_sub_block}" + "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks/{reservation_sub_block}" % client.transport._host, args[1], ) @@ -1557,8 +1557,8 @@ def test_get_iam_policy_rest_flattened(): sample_request = { "project": "sample1", "zone": "sample2", - "parent_resource": "sample3", - "resource": "sample4", + "parent_resource": "reservations/sample3/reservationBlocks/sample4", + "resource": "sample5", } # get truthy value for each flattened field @@ -1587,7 +1587,7 @@ def test_get_iam_policy_rest_flattened(): assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/{parent_resource}/reservationSubBlocks/{resource}/getIamPolicy" + "%s/compute/beta/projects/{project}/zones/{zone}/{parent_resource=reservations/*/reservationBlocks/*}/reservationSubBlocks/{resource}/getIamPolicy" % client.transport._host, args[1], ) @@ -1781,7 +1781,7 @@ def test_list_rest_flattened(): sample_request = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", + "parent_name": "reservations/sample3/reservationBlocks/sample4", } # get truthy value for each flattened field @@ -1809,7 +1809,7 @@ def test_list_rest_flattened(): assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks" + "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks" % client.transport._host, args[1], ) @@ -1885,7 +1885,7 @@ def test_list_rest_pager(transport: str = "rest"): sample_request = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", + "parent_name": "reservations/sample3/reservationBlocks/sample4", } pager = client.list(request=sample_request) @@ -2066,8 +2066,8 @@ def test_perform_maintenance_rest_flattened(): sample_request = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } # get truthy value for each flattened field @@ -2096,7 +2096,7 @@ def test_perform_maintenance_rest_flattened(): assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks/{reservation_sub_block}/performMaintenance" + "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks/{reservation_sub_block}/performMaintenance" % client.transport._host, args[1], ) @@ -2287,8 +2287,8 @@ def test_perform_maintenance_unary_rest_flattened(): sample_request = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } # get truthy value for each flattened field @@ -2317,7 +2317,7 @@ def test_perform_maintenance_unary_rest_flattened(): assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks/{reservation_sub_block}/performMaintenance" + "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks/{reservation_sub_block}/performMaintenance" % client.transport._host, args[1], ) @@ -2506,8 +2506,8 @@ def test_report_faulty_rest_flattened(): sample_request = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } # get truthy value for each flattened field @@ -2539,7 +2539,7 @@ def test_report_faulty_rest_flattened(): assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks/{reservation_sub_block}/reportFaulty" + "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks/{reservation_sub_block}/reportFaulty" % client.transport._host, args[1], ) @@ -2731,8 +2731,8 @@ def test_report_faulty_unary_rest_flattened(): sample_request = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } # get truthy value for each flattened field @@ -2764,7 +2764,7 @@ def test_report_faulty_unary_rest_flattened(): assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name}/reservationSubBlocks/{reservation_sub_block}/reportFaulty" + "%s/compute/beta/projects/{project}/zones/{zone}/{parent_name=reservations/*/reservationBlocks/*}/reservationSubBlocks/{reservation_sub_block}/reportFaulty" % client.transport._host, args[1], ) @@ -2950,8 +2950,8 @@ def test_set_iam_policy_rest_flattened(): sample_request = { "project": "sample1", "zone": "sample2", - "parent_resource": "sample3", - "resource": "sample4", + "parent_resource": "reservations/sample3/reservationBlocks/sample4", + "resource": "sample5", } # get truthy value for each flattened field @@ -2983,7 +2983,7 @@ def test_set_iam_policy_rest_flattened(): assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/{parent_resource}/reservationSubBlocks/{resource}/setIamPolicy" + "%s/compute/beta/projects/{project}/zones/{zone}/{parent_resource=reservations/*/reservationBlocks/*}/reservationSubBlocks/{resource}/setIamPolicy" % client.transport._host, args[1], ) @@ -3173,8 +3173,8 @@ def test_test_iam_permissions_rest_flattened(): sample_request = { "project": "sample1", "zone": "sample2", - "parent_resource": "sample3", - "resource": "sample4", + "parent_resource": "reservations/sample3/reservationBlocks/sample4", + "resource": "sample5", } # get truthy value for each flattened field @@ -3206,7 +3206,7 @@ def test_test_iam_permissions_rest_flattened(): assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/zones/{zone}/{parent_resource}/reservationSubBlocks/{resource}/testIamPermissions" + "%s/compute/beta/projects/{project}/zones/{zone}/{parent_resource=reservations/*/reservationBlocks/*}/reservationSubBlocks/{resource}/testIamPermissions" % client.transport._host, args[1], ) @@ -3323,8 +3323,8 @@ def test_get_rest_bad_request(request_type=compute.GetReservationSubBlockRequest request_init = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } request = request_type(**request_init) @@ -3359,8 +3359,8 @@ def test_get_rest_call_success(request_type): request_init = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } request = request_type(**request_init) @@ -3462,8 +3462,8 @@ def test_get_iam_policy_rest_bad_request( request_init = { "project": "sample1", "zone": "sample2", - "parent_resource": "sample3", - "resource": "sample4", + "parent_resource": "reservations/sample3/reservationBlocks/sample4", + "resource": "sample5", } request = request_type(**request_init) @@ -3498,8 +3498,8 @@ def test_get_iam_policy_rest_call_success(request_type): request_init = { "project": "sample1", "zone": "sample2", - "parent_resource": "sample3", - "resource": "sample4", + "parent_resource": "reservations/sample3/reservationBlocks/sample4", + "resource": "sample5", } request = request_type(**request_init) @@ -3599,7 +3599,11 @@ def test_list_rest_bad_request(request_type=compute.ListReservationSubBlocksRequ credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "zone": "sample2", "parent_name": "sample3"} + request_init = { + "project": "sample1", + "zone": "sample2", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -3630,7 +3634,11 @@ def test_list_rest_call_success(request_type): ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "zone": "sample2", "parent_name": "sample3"} + request_init = { + "project": "sample1", + "zone": "sample2", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + } request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -3740,8 +3748,8 @@ def test_perform_maintenance_rest_bad_request( request_init = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } request = request_type(**request_init) @@ -3776,8 +3784,8 @@ def test_perform_maintenance_rest_call_success(request_type): request_init = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } request = request_type(**request_init) @@ -3920,8 +3928,8 @@ def test_report_faulty_rest_bad_request( request_init = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } request = request_type(**request_init) @@ -3956,8 +3964,8 @@ def test_report_faulty_rest_call_success(request_type): request_init = { "project": "sample1", "zone": "sample2", - "parent_name": "sample3", - "reservation_sub_block": "sample4", + "parent_name": "reservations/sample3/reservationBlocks/sample4", + "reservation_sub_block": "sample5", } request_init["reservation_sub_blocks_report_faulty_request_resource"] = { "disruption_schedule": "disruption_schedule_value", @@ -4189,8 +4197,8 @@ def test_set_iam_policy_rest_bad_request( request_init = { "project": "sample1", "zone": "sample2", - "parent_resource": "sample3", - "resource": "sample4", + "parent_resource": "reservations/sample3/reservationBlocks/sample4", + "resource": "sample5", } request = request_type(**request_init) @@ -4225,8 +4233,8 @@ def test_set_iam_policy_rest_call_success(request_type): request_init = { "project": "sample1", "zone": "sample2", - "parent_resource": "sample3", - "resource": "sample4", + "parent_resource": "reservations/sample3/reservationBlocks/sample4", + "resource": "sample5", } request_init["zone_set_nested_policy_request_resource"] = { "bindings": [ @@ -4450,8 +4458,8 @@ def test_test_iam_permissions_rest_bad_request( request_init = { "project": "sample1", "zone": "sample2", - "parent_resource": "sample3", - "resource": "sample4", + "parent_resource": "reservations/sample3/reservationBlocks/sample4", + "resource": "sample5", } request = request_type(**request_init) @@ -4486,8 +4494,8 @@ def test_test_iam_permissions_rest_call_success(request_type): request_init = { "project": "sample1", "zone": "sample2", - "parent_resource": "sample3", - "resource": "sample4", + "parent_resource": "reservations/sample3/reservationBlocks/sample4", + "resource": "sample5", } request_init["test_permissions_request_resource"] = { "permissions": ["permissions_value1", "permissions_value2"] diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_reservations.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_reservations.py index 58ddd137af6f..0d1ae8f9d3e1 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_reservations.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_reservations.py @@ -5425,6 +5425,7 @@ def test_insert_rest_call_success(request_type): "linked_commitments_value2", ], "name": "name_value", + "params": {"resource_manager_tags": {}}, "protection_tier": "protection_tier_value", "reservation_mode": "reservation_mode_value", "reservation_sharing_policy": { @@ -6853,6 +6854,7 @@ def test_update_rest_call_success(request_type): "linked_commitments_value2", ], "name": "name_value", + "params": {"resource_manager_tags": {}}, "protection_tier": "protection_tier_value", "reservation_mode": "reservation_mode_value", "reservation_sharing_policy": { diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_routers.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_routers.py index 978ef431e357..830c33974dfd 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_routers.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_routers.py @@ -1791,7 +1791,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"): ) -def test_delete_route_policy_rest_use_cached_wrapped_rpc(): +def test_delete_named_set_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -1805,21 +1805,19 @@ def test_delete_route_policy_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.delete_route_policy in client._transport._wrapped_methods - ) + assert client._transport.delete_named_set in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.delete_route_policy] = ( + client._transport._wrapped_methods[client._transport.delete_named_set] = ( mock_rpc ) request = {} - client.delete_route_policy(request) + client.delete_named_set(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -1828,15 +1826,15 @@ def test_delete_route_policy_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete_route_policy(request) + client.delete_named_set(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_delete_route_policy_rest_required_fields( - request_type=compute.DeleteRoutePolicyRouterRequest, +def test_delete_named_set_rest_required_fields( + request_type=compute.DeleteNamedSetRouterRequest, ): transport_class = transports.RoutersRestTransport @@ -1854,7 +1852,7 @@ def test_delete_route_policy_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_route_policy._get_unset_required_fields(jsonified_request) + ).delete_named_set._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -1865,11 +1863,11 @@ def test_delete_route_policy_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_route_policy._get_unset_required_fields(jsonified_request) + ).delete_named_set._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "policy", + "named_set", "request_id", ) ) @@ -1918,23 +1916,23 @@ def test_delete_route_policy_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_route_policy(request) + response = client.delete_named_set(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_delete_route_policy_rest_unset_required_fields(): +def test_delete_named_set_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.delete_route_policy._get_unset_required_fields({}) + unset_fields = transport.delete_named_set._get_unset_required_fields({}) assert set(unset_fields) == ( set( ( - "policy", + "namedSet", "requestId", ) ) @@ -1948,7 +1946,7 @@ def test_delete_route_policy_rest_unset_required_fields(): ) -def test_delete_route_policy_rest_flattened(): +def test_delete_named_set_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -1984,20 +1982,20 @@ def test_delete_route_policy_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete_route_policy(**mock_args) + client.delete_named_set(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/deleteRoutePolicy" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/deleteNamedSet" % client.transport._host, args[1], ) -def test_delete_route_policy_rest_flattened_error(transport: str = "rest"): +def test_delete_named_set_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -2006,15 +2004,15 @@ def test_delete_route_policy_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete_route_policy( - compute.DeleteRoutePolicyRouterRequest(), + client.delete_named_set( + compute.DeleteNamedSetRouterRequest(), project="project_value", region="region_value", router="router_value", ) -def test_delete_route_policy_unary_rest_use_cached_wrapped_rpc(): +def test_delete_named_set_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -2028,21 +2026,19 @@ def test_delete_route_policy_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.delete_route_policy in client._transport._wrapped_methods - ) + assert client._transport.delete_named_set in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.delete_route_policy] = ( + client._transport._wrapped_methods[client._transport.delete_named_set] = ( mock_rpc ) request = {} - client.delete_route_policy_unary(request) + client.delete_named_set_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -2051,15 +2047,15 @@ def test_delete_route_policy_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.delete_route_policy_unary(request) + client.delete_named_set_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_delete_route_policy_unary_rest_required_fields( - request_type=compute.DeleteRoutePolicyRouterRequest, +def test_delete_named_set_unary_rest_required_fields( + request_type=compute.DeleteNamedSetRouterRequest, ): transport_class = transports.RoutersRestTransport @@ -2077,7 +2073,7 @@ def test_delete_route_policy_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_route_policy._get_unset_required_fields(jsonified_request) + ).delete_named_set._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -2088,11 +2084,11 @@ def test_delete_route_policy_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).delete_route_policy._get_unset_required_fields(jsonified_request) + ).delete_named_set._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "policy", + "named_set", "request_id", ) ) @@ -2141,23 +2137,23 @@ def test_delete_route_policy_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete_route_policy_unary(request) + response = client.delete_named_set_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_delete_route_policy_unary_rest_unset_required_fields(): +def test_delete_named_set_unary_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.delete_route_policy._get_unset_required_fields({}) + unset_fields = transport.delete_named_set._get_unset_required_fields({}) assert set(unset_fields) == ( set( ( - "policy", + "namedSet", "requestId", ) ) @@ -2171,7 +2167,7 @@ def test_delete_route_policy_unary_rest_unset_required_fields(): ) -def test_delete_route_policy_unary_rest_flattened(): +def test_delete_named_set_unary_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -2207,20 +2203,20 @@ def test_delete_route_policy_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete_route_policy_unary(**mock_args) + client.delete_named_set_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/deleteRoutePolicy" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/deleteNamedSet" % client.transport._host, args[1], ) -def test_delete_route_policy_unary_rest_flattened_error(transport: str = "rest"): +def test_delete_named_set_unary_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -2229,15 +2225,15 @@ def test_delete_route_policy_unary_rest_flattened_error(transport: str = "rest") # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.delete_route_policy_unary( - compute.DeleteRoutePolicyRouterRequest(), + client.delete_named_set_unary( + compute.DeleteNamedSetRouterRequest(), project="project_value", region="region_value", router="router_value", ) -def test_get_rest_use_cached_wrapped_rpc(): +def test_delete_route_policy_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -2251,29 +2247,39 @@ def test_get_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.get in client._transport._wrapped_methods + assert ( + client._transport.delete_route_policy in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.get] = mock_rpc + client._transport._wrapped_methods[client._transport.delete_route_policy] = ( + mock_rpc + ) request = {} - client.get(request) + client.delete_route_policy(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.delete_route_policy(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_get_rest_required_fields(request_type=compute.GetRouterRequest): +def test_delete_route_policy_rest_required_fields( + request_type=compute.DeleteRoutePolicyRouterRequest, +): transport_class = transports.RoutersRestTransport request_init = {} @@ -2290,7 +2296,7 @@ def test_get_rest_required_fields(request_type=compute.GetRouterRequest): unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get._get_unset_required_fields(jsonified_request) + ).delete_route_policy._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -2301,7 +2307,14 @@ def test_get_rest_required_fields(request_type=compute.GetRouterRequest): unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get._get_unset_required_fields(jsonified_request) + ).delete_route_policy._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "policy", + "request_id", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -2319,7 +2332,7 @@ def test_get_rest_required_fields(request_type=compute.GetRouterRequest): request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Router() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -2331,7 +2344,7 @@ def test_get_rest_required_fields(request_type=compute.GetRouterRequest): pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "get", + "method": "post", "query_params": pb_request, } transcode.return_value = transcode_result @@ -2340,28 +2353,33 @@ def test_get_rest_required_fields(request_type=compute.GetRouterRequest): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Router.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.get(request) + response = client.delete_route_policy(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_get_rest_unset_required_fields(): +def test_delete_route_policy_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.get._get_unset_required_fields({}) + unset_fields = transport.delete_route_policy._get_unset_required_fields({}) assert set(unset_fields) == ( - set(()) + set( + ( + "policy", + "requestId", + ) + ) & set( ( "project", @@ -2372,7 +2390,7 @@ def test_get_rest_unset_required_fields(): ) -def test_get_rest_flattened(): +def test_delete_route_policy_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -2381,7 +2399,7 @@ def test_get_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Router() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = { @@ -2402,26 +2420,26 @@ def test_get_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Router.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.get(**mock_args) + client.delete_route_policy(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/deleteRoutePolicy" % client.transport._host, args[1], ) -def test_get_rest_flattened_error(transport: str = "rest"): +def test_delete_route_policy_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -2430,15 +2448,15 @@ def test_get_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get( - compute.GetRouterRequest(), + client.delete_route_policy( + compute.DeleteRoutePolicyRouterRequest(), project="project_value", region="region_value", router="router_value", ) -def test_get_nat_ip_info_rest_use_cached_wrapped_rpc(): +def test_delete_route_policy_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -2452,30 +2470,38 @@ def test_get_nat_ip_info_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.get_nat_ip_info in client._transport._wrapped_methods + assert ( + client._transport.delete_route_policy in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.get_nat_ip_info] = mock_rpc + client._transport._wrapped_methods[client._transport.delete_route_policy] = ( + mock_rpc + ) request = {} - client.get_nat_ip_info(request) + client.delete_route_policy_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get_nat_ip_info(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.delete_route_policy_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_get_nat_ip_info_rest_required_fields( - request_type=compute.GetNatIpInfoRouterRequest, +def test_delete_route_policy_unary_rest_required_fields( + request_type=compute.DeleteRoutePolicyRouterRequest, ): transport_class = transports.RoutersRestTransport @@ -2493,7 +2519,7 @@ def test_get_nat_ip_info_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_nat_ip_info._get_unset_required_fields(jsonified_request) + ).delete_route_policy._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -2504,9 +2530,14 @@ def test_get_nat_ip_info_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_nat_ip_info._get_unset_required_fields(jsonified_request) + ).delete_route_policy._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("nat_name",)) + assert not set(unset_fields) - set( + ( + "policy", + "request_id", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -2524,7 +2555,7 @@ def test_get_nat_ip_info_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.NatIpInfoResponse() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -2536,7 +2567,7 @@ def test_get_nat_ip_info_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "get", + "method": "post", "query_params": pb_request, } transcode.return_value = transcode_result @@ -2545,28 +2576,33 @@ def test_get_nat_ip_info_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.NatIpInfoResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.get_nat_ip_info(request) + response = client.delete_route_policy_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_get_nat_ip_info_rest_unset_required_fields(): +def test_delete_route_policy_unary_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.get_nat_ip_info._get_unset_required_fields({}) + unset_fields = transport.delete_route_policy._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("natName",)) + set( + ( + "policy", + "requestId", + ) + ) & set( ( "project", @@ -2577,7 +2613,7 @@ def test_get_nat_ip_info_rest_unset_required_fields(): ) -def test_get_nat_ip_info_rest_flattened(): +def test_delete_route_policy_unary_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -2586,7 +2622,7 @@ def test_get_nat_ip_info_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.NatIpInfoResponse() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = { @@ -2607,26 +2643,26 @@ def test_get_nat_ip_info_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.NatIpInfoResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.get_nat_ip_info(**mock_args) + client.delete_route_policy_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/getNatIpInfo" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/deleteRoutePolicy" % client.transport._host, args[1], ) -def test_get_nat_ip_info_rest_flattened_error(transport: str = "rest"): +def test_delete_route_policy_unary_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -2635,15 +2671,15 @@ def test_get_nat_ip_info_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get_nat_ip_info( - compute.GetNatIpInfoRouterRequest(), + client.delete_route_policy_unary( + compute.DeleteRoutePolicyRouterRequest(), project="project_value", region="region_value", router="router_value", ) -def test_get_nat_mapping_info_rest_use_cached_wrapped_rpc(): +def test_get_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -2657,35 +2693,29 @@ def test_get_nat_mapping_info_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.get_nat_mapping_info in client._transport._wrapped_methods - ) + assert client._transport.get in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.get_nat_mapping_info] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.get] = mock_rpc request = {} - client.get_nat_mapping_info(request) + client.get(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get_nat_mapping_info(request) + client.get(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_get_nat_mapping_info_rest_required_fields( - request_type=compute.GetNatMappingInfoRoutersRequest, -): +def test_get_rest_required_fields(request_type=compute.GetRouterRequest): transport_class = transports.RoutersRestTransport request_init = {} @@ -2702,7 +2732,7 @@ def test_get_nat_mapping_info_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_nat_mapping_info._get_unset_required_fields(jsonified_request) + ).get._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -2713,18 +2743,7 @@ def test_get_nat_mapping_info_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_nat_mapping_info._get_unset_required_fields(jsonified_request) - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "filter", - "max_results", - "nat_name", - "order_by", - "page_token", - "return_partial_success", - ) - ) + ).get._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -2742,7 +2761,7 @@ def test_get_nat_mapping_info_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.VmEndpointNatMappingsList() + return_value = compute.Router() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -2763,37 +2782,28 @@ def test_get_nat_mapping_info_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.VmEndpointNatMappingsList.pb(return_value) + return_value = compute.Router.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.get_nat_mapping_info(request) + response = client.get(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_get_nat_mapping_info_rest_unset_required_fields(): +def test_get_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.get_nat_mapping_info._get_unset_required_fields({}) + unset_fields = transport.get._get_unset_required_fields({}) assert set(unset_fields) == ( - set( - ( - "filter", - "maxResults", - "natName", - "orderBy", - "pageToken", - "returnPartialSuccess", - ) - ) + set(()) & set( ( "project", @@ -2804,7 +2814,7 @@ def test_get_nat_mapping_info_rest_unset_required_fields(): ) -def test_get_nat_mapping_info_rest_flattened(): +def test_get_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -2813,7 +2823,7 @@ def test_get_nat_mapping_info_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.VmEndpointNatMappingsList() + return_value = compute.Router() # get arguments that satisfy an http rule for this method sample_request = { @@ -2834,26 +2844,26 @@ def test_get_nat_mapping_info_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.VmEndpointNatMappingsList.pb(return_value) + return_value = compute.Router.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.get_nat_mapping_info(**mock_args) + client.get(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/getNatMappingInfo" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" % client.transport._host, args[1], ) -def test_get_nat_mapping_info_rest_flattened_error(transport: str = "rest"): +def test_get_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -2862,80 +2872,15 @@ def test_get_nat_mapping_info_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get_nat_mapping_info( - compute.GetNatMappingInfoRoutersRequest(), + client.get( + compute.GetRouterRequest(), project="project_value", region="region_value", router="router_value", ) -def test_get_nat_mapping_info_rest_pager(transport: str = "rest"): - client = RoutersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, - ) - - # Mock the http request call within the method and fake a response. - with mock.patch.object(Session, "request") as req: - # TODO(kbandes): remove this mock unless there's a good reason for it. - # with mock.patch.object(path_template, 'transcode') as transcode: - # Set the response as a series of pages - response = ( - compute.VmEndpointNatMappingsList( - result=[ - compute.VmEndpointNatMappings(), - compute.VmEndpointNatMappings(), - compute.VmEndpointNatMappings(), - ], - next_page_token="abc", - ), - compute.VmEndpointNatMappingsList( - result=[], - next_page_token="def", - ), - compute.VmEndpointNatMappingsList( - result=[ - compute.VmEndpointNatMappings(), - ], - next_page_token="ghi", - ), - compute.VmEndpointNatMappingsList( - result=[ - compute.VmEndpointNatMappings(), - compute.VmEndpointNatMappings(), - ], - ), - ) - # Two responses for two calls - response = response + response - - # Wrap the values into proper Response objs - response = tuple(compute.VmEndpointNatMappingsList.to_json(x) for x in response) - return_values = tuple(Response() for i in response) - for return_val, response_val in zip(return_values, response): - return_val._content = response_val.encode("UTF-8") - return_val.status_code = 200 - req.side_effect = return_values - - sample_request = { - "project": "sample1", - "region": "sample2", - "router": "sample3", - } - - pager = client.get_nat_mapping_info(request=sample_request) - - results = list(pager) - assert len(results) == 6 - assert all(isinstance(i, compute.VmEndpointNatMappings) for i in results) - - pages = list(client.get_nat_mapping_info(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token - - -def test_get_route_policy_rest_use_cached_wrapped_rpc(): +def test_get_named_set_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -2949,32 +2894,30 @@ def test_get_route_policy_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.get_route_policy in client._transport._wrapped_methods + assert client._transport.get_named_set in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.get_route_policy] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.get_named_set] = mock_rpc request = {} - client.get_route_policy(request) + client.get_named_set(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get_route_policy(request) + client.get_named_set(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_get_route_policy_rest_required_fields( - request_type=compute.GetRoutePolicyRouterRequest, +def test_get_named_set_rest_required_fields( + request_type=compute.GetNamedSetRouterRequest, ): transport_class = transports.RoutersRestTransport @@ -2992,7 +2935,7 @@ def test_get_route_policy_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_route_policy._get_unset_required_fields(jsonified_request) + ).get_named_set._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -3003,9 +2946,9 @@ def test_get_route_policy_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_route_policy._get_unset_required_fields(jsonified_request) + ).get_named_set._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("policy",)) + assert not set(unset_fields) - set(("named_set",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -3023,7 +2966,7 @@ def test_get_route_policy_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.RoutersGetRoutePolicyResponse() + return_value = compute.RoutersGetNamedSetResponse() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -3044,28 +2987,28 @@ def test_get_route_policy_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RoutersGetRoutePolicyResponse.pb(return_value) + return_value = compute.RoutersGetNamedSetResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.get_route_policy(request) + response = client.get_named_set(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_get_route_policy_rest_unset_required_fields(): +def test_get_named_set_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.get_route_policy._get_unset_required_fields({}) + unset_fields = transport.get_named_set._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("policy",)) + set(("namedSet",)) & set( ( "project", @@ -3076,7 +3019,7 @@ def test_get_route_policy_rest_unset_required_fields(): ) -def test_get_route_policy_rest_flattened(): +def test_get_named_set_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -3085,7 +3028,7 @@ def test_get_route_policy_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.RoutersGetRoutePolicyResponse() + return_value = compute.RoutersGetNamedSetResponse() # get arguments that satisfy an http rule for this method sample_request = { @@ -3106,26 +3049,26 @@ def test_get_route_policy_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RoutersGetRoutePolicyResponse.pb(return_value) + return_value = compute.RoutersGetNamedSetResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.get_route_policy(**mock_args) + client.get_named_set(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/getRoutePolicy" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/getNamedSet" % client.transport._host, args[1], ) -def test_get_route_policy_rest_flattened_error(transport: str = "rest"): +def test_get_named_set_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -3134,15 +3077,15 @@ def test_get_route_policy_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get_route_policy( - compute.GetRoutePolicyRouterRequest(), + client.get_named_set( + compute.GetNamedSetRouterRequest(), project="project_value", region="region_value", router="router_value", ) -def test_get_router_status_rest_use_cached_wrapped_rpc(): +def test_get_nat_ip_info_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -3156,32 +3099,30 @@ def test_get_router_status_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.get_router_status in client._transport._wrapped_methods + assert client._transport.get_nat_ip_info in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.get_router_status] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.get_nat_ip_info] = mock_rpc request = {} - client.get_router_status(request) + client.get_nat_ip_info(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.get_router_status(request) + client.get_nat_ip_info(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_get_router_status_rest_required_fields( - request_type=compute.GetRouterStatusRouterRequest, +def test_get_nat_ip_info_rest_required_fields( + request_type=compute.GetNatIpInfoRouterRequest, ): transport_class = transports.RoutersRestTransport @@ -3199,7 +3140,7 @@ def test_get_router_status_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_router_status._get_unset_required_fields(jsonified_request) + ).get_nat_ip_info._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -3210,7 +3151,9 @@ def test_get_router_status_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).get_router_status._get_unset_required_fields(jsonified_request) + ).get_nat_ip_info._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("nat_name",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -3228,7 +3171,7 @@ def test_get_router_status_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.RouterStatusResponse() + return_value = compute.NatIpInfoResponse() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -3249,28 +3192,28 @@ def test_get_router_status_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RouterStatusResponse.pb(return_value) + return_value = compute.NatIpInfoResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.get_router_status(request) + response = client.get_nat_ip_info(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_get_router_status_rest_unset_required_fields(): +def test_get_nat_ip_info_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.get_router_status._get_unset_required_fields({}) + unset_fields = transport.get_nat_ip_info._get_unset_required_fields({}) assert set(unset_fields) == ( - set(()) + set(("natName",)) & set( ( "project", @@ -3281,7 +3224,7 @@ def test_get_router_status_rest_unset_required_fields(): ) -def test_get_router_status_rest_flattened(): +def test_get_nat_ip_info_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -3290,7 +3233,7 @@ def test_get_router_status_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.RouterStatusResponse() + return_value = compute.NatIpInfoResponse() # get arguments that satisfy an http rule for this method sample_request = { @@ -3311,26 +3254,26 @@ def test_get_router_status_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RouterStatusResponse.pb(return_value) + return_value = compute.NatIpInfoResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.get_router_status(**mock_args) + client.get_nat_ip_info(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/getRouterStatus" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/getNatIpInfo" % client.transport._host, args[1], ) -def test_get_router_status_rest_flattened_error(transport: str = "rest"): +def test_get_nat_ip_info_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -3339,15 +3282,15 @@ def test_get_router_status_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.get_router_status( - compute.GetRouterStatusRouterRequest(), + client.get_nat_ip_info( + compute.GetNatIpInfoRouterRequest(), project="project_value", region="region_value", router="router_value", ) -def test_insert_rest_use_cached_wrapped_rpc(): +def test_get_nat_mapping_info_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -3361,38 +3304,41 @@ def test_insert_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.insert in client._transport._wrapped_methods + assert ( + client._transport.get_nat_mapping_info in client._transport._wrapped_methods + ) # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.insert] = mock_rpc + client._transport._wrapped_methods[client._transport.get_nat_mapping_info] = ( + mock_rpc + ) request = {} - client.insert(request) + client.get_nat_mapping_info(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.insert(request) + client.get_nat_mapping_info(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_insert_rest_required_fields(request_type=compute.InsertRouterRequest): +def test_get_nat_mapping_info_rest_required_fields( + request_type=compute.GetNatMappingInfoRoutersRequest, +): transport_class = transports.RoutersRestTransport request_init = {} request_init["project"] = "" request_init["region"] = "" + request_init["router"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -3403,19 +3349,29 @@ def test_insert_rest_required_fields(request_type=compute.InsertRouterRequest): unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).insert._get_unset_required_fields(jsonified_request) + ).get_nat_mapping_info._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).insert._get_unset_required_fields(jsonified_request) + ).get_nat_mapping_info._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set( + ( + "filter", + "max_results", + "nat_name", + "order_by", + "page_token", + "return_partial_success", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -3423,6 +3379,8 @@ def test_insert_rest_required_fields(request_type=compute.InsertRouterRequest): assert jsonified_request["project"] == "project_value" assert "region" in jsonified_request assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), @@ -3431,7 +3389,7 @@ def test_insert_rest_required_fields(request_type=compute.InsertRouterRequest): request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.VmEndpointNatMappingsList() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -3443,49 +3401,57 @@ def test_insert_rest_required_fields(request_type=compute.InsertRouterRequest): pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "get", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.VmEndpointNatMappingsList.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.insert(request) + response = client.get_nat_mapping_info(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_insert_rest_unset_required_fields(): +def test_get_nat_mapping_info_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.insert._get_unset_required_fields({}) + unset_fields = transport.get_nat_mapping_info._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set( + ( + "filter", + "maxResults", + "natName", + "orderBy", + "pageToken", + "returnPartialSuccess", + ) + ) & set( ( "project", "region", - "routerResource", + "router", ) ) ) -def test_insert_rest_flattened(): +def test_get_nat_mapping_info_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -3494,18 +3460,20 @@ def test_insert_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.VmEndpointNatMappingsList() # get arguments that satisfy an http rule for this method - sample_request = {"project": "sample1", "region": "sample2"} + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } # get truthy value for each flattened field mock_args = dict( project="project_value", region="region_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), + router="router_value", ) mock_args.update(sample_request) @@ -3513,26 +3481,26 @@ def test_insert_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.VmEndpointNatMappingsList.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.insert(**mock_args) + client.get_nat_mapping_info(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/getNatMappingInfo" % client.transport._host, args[1], ) -def test_insert_rest_flattened_error(transport: str = "rest"): +def test_get_nat_mapping_info_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -3541,62 +3509,126 @@ def test_insert_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.insert( - compute.InsertRouterRequest(), + client.get_nat_mapping_info( + compute.GetNatMappingInfoRoutersRequest(), project="project_value", region="region_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), - ) - - -def test_insert_unary_rest_use_cached_wrapped_rpc(): - # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, - # instead of constructing them on each call - with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: - client = RoutersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + router="router_value", ) - # Should wrap all calls on client creation - assert wrapper_fn.call_count > 0 - wrapper_fn.reset_mock() - # Ensure method has been cached - assert client._transport.insert in client._transport._wrapped_methods +def test_get_nat_mapping_info_rest_pager(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) - # Replace cached wrapped function with mock - mock_rpc = mock.Mock() - mock_rpc.return_value.name = ( - "foo" # operation_request.operation in compute client(s) expect a string. + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # TODO(kbandes): remove this mock unless there's a good reason for it. + # with mock.patch.object(path_template, 'transcode') as transcode: + # Set the response as a series of pages + response = ( + compute.VmEndpointNatMappingsList( + result=[ + compute.VmEndpointNatMappings(), + compute.VmEndpointNatMappings(), + compute.VmEndpointNatMappings(), + ], + next_page_token="abc", + ), + compute.VmEndpointNatMappingsList( + result=[], + next_page_token="def", + ), + compute.VmEndpointNatMappingsList( + result=[ + compute.VmEndpointNatMappings(), + ], + next_page_token="ghi", + ), + compute.VmEndpointNatMappingsList( + result=[ + compute.VmEndpointNatMappings(), + compute.VmEndpointNatMappings(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.VmEndpointNatMappingsList.to_json(x) for x in response) + return_values = tuple(Response() for i in response) + for return_val, response_val in zip(return_values, response): + return_val._content = response_val.encode("UTF-8") + return_val.status_code = 200 + req.side_effect = return_values + + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + pager = client.get_nat_mapping_info(request=sample_request) + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.VmEndpointNatMappings) for i in results) + + pages = list(client.get_nat_mapping_info(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_get_route_policy_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.get_route_policy in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.get_route_policy] = ( + mock_rpc ) - client._transport._wrapped_methods[client._transport.insert] = mock_rpc request = {} - client.insert_unary(request) + client.get_route_policy(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.insert_unary(request) + client.get_route_policy(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequest): +def test_get_route_policy_rest_required_fields( + request_type=compute.GetRoutePolicyRouterRequest, +): transport_class = transports.RoutersRestTransport request_init = {} request_init["project"] = "" request_init["region"] = "" + request_init["router"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -3607,19 +3639,20 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequ unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).insert._get_unset_required_fields(jsonified_request) + ).get_route_policy._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).insert._get_unset_required_fields(jsonified_request) + ).get_route_policy._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set(("policy",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -3627,6 +3660,8 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequ assert jsonified_request["project"] == "project_value" assert "region" in jsonified_request assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), @@ -3635,7 +3670,7 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequ request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RoutersGetRoutePolicyResponse() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -3647,49 +3682,48 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequ pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "get", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RoutersGetRoutePolicyResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.insert_unary(request) + response = client.get_route_policy(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_insert_unary_rest_unset_required_fields(): +def test_get_route_policy_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.insert._get_unset_required_fields({}) + unset_fields = transport.get_route_policy._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set(("policy",)) & set( ( "project", "region", - "routerResource", + "router", ) ) ) -def test_insert_unary_rest_flattened(): +def test_get_route_policy_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -3698,18 +3732,20 @@ def test_insert_unary_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RoutersGetRoutePolicyResponse() # get arguments that satisfy an http rule for this method - sample_request = {"project": "sample1", "region": "sample2"} + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } # get truthy value for each flattened field mock_args = dict( project="project_value", region="region_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), + router="router_value", ) mock_args.update(sample_request) @@ -3717,26 +3753,26 @@ def test_insert_unary_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RoutersGetRoutePolicyResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.insert_unary(**mock_args) + client.get_route_policy(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/getRoutePolicy" % client.transport._host, args[1], ) -def test_insert_unary_rest_flattened_error(transport: str = "rest"): +def test_get_route_policy_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -3745,17 +3781,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.insert_unary( - compute.InsertRouterRequest(), + client.get_route_policy( + compute.GetRoutePolicyRouterRequest(), project="project_value", region="region_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), + router="router_value", ) -def test_list_rest_use_cached_wrapped_rpc(): +def test_get_router_status_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -3769,34 +3803,39 @@ def test_list_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.list in client._transport._wrapped_methods + assert client._transport.get_router_status in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.list] = mock_rpc + client._transport._wrapped_methods[client._transport.get_router_status] = ( + mock_rpc + ) request = {} - client.list(request) + client.get_router_status(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list(request) + client.get_router_status(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_list_rest_required_fields(request_type=compute.ListRoutersRequest): +def test_get_router_status_rest_required_fields( + request_type=compute.GetRouterStatusRouterRequest, +): transport_class = transports.RoutersRestTransport request_init = {} request_init["project"] = "" request_init["region"] = "" + request_init["router"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -3807,27 +3846,18 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest): unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list._get_unset_required_fields(jsonified_request) + ).get_router_status._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list._get_unset_required_fields(jsonified_request) - # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "filter", - "max_results", - "order_by", - "page_token", - "return_partial_success", - ) - ) + ).get_router_status._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -3835,6 +3865,8 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest): assert jsonified_request["project"] == "project_value" assert "region" in jsonified_request assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), @@ -3843,7 +3875,7 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest): request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.RouterList() + return_value = compute.RouterStatusResponse() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -3864,46 +3896,39 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RouterList.pb(return_value) + return_value = compute.RouterStatusResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.list(request) + response = client.get_router_status(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_list_rest_unset_required_fields(): +def test_get_router_status_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.list._get_unset_required_fields({}) + unset_fields = transport.get_router_status._get_unset_required_fields({}) assert set(unset_fields) == ( - set( - ( - "filter", - "maxResults", - "orderBy", - "pageToken", - "returnPartialSuccess", - ) - ) + set(()) & set( ( "project", "region", + "router", ) ) ) -def test_list_rest_flattened(): +def test_get_router_status_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -3912,15 +3937,20 @@ def test_list_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.RouterList() + return_value = compute.RouterStatusResponse() # get arguments that satisfy an http rule for this method - sample_request = {"project": "sample1", "region": "sample2"} + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } # get truthy value for each flattened field mock_args = dict( project="project_value", region="region_value", + router="router_value", ) mock_args.update(sample_request) @@ -3928,26 +3958,26 @@ def test_list_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RouterList.pb(return_value) + return_value = compute.RouterStatusResponse.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list(**mock_args) + client.get_router_status(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/getRouterStatus" % client.transport._host, args[1], ) -def test_list_rest_flattened_error(transport: str = "rest"): +def test_get_router_status_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -3956,119 +3986,60 @@ def test_list_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.list( - compute.ListRoutersRequest(), + client.get_router_status( + compute.GetRouterStatusRouterRequest(), project="project_value", region="region_value", + router="router_value", ) -def test_list_rest_pager(transport: str = "rest"): - client = RoutersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, - ) - - # Mock the http request call within the method and fake a response. - with mock.patch.object(Session, "request") as req: - # TODO(kbandes): remove this mock unless there's a good reason for it. - # with mock.patch.object(path_template, 'transcode') as transcode: - # Set the response as a series of pages - response = ( - compute.RouterList( - items=[ - compute.Router(), - compute.Router(), - compute.Router(), - ], - next_page_token="abc", - ), - compute.RouterList( - items=[], - next_page_token="def", - ), - compute.RouterList( - items=[ - compute.Router(), - ], - next_page_token="ghi", - ), - compute.RouterList( - items=[ - compute.Router(), - compute.Router(), - ], - ), - ) - # Two responses for two calls - response = response + response - - # Wrap the values into proper Response objs - response = tuple(compute.RouterList.to_json(x) for x in response) - return_values = tuple(Response() for i in response) - for return_val, response_val in zip(return_values, response): - return_val._content = response_val.encode("UTF-8") - return_val.status_code = 200 - req.side_effect = return_values - - sample_request = {"project": "sample1", "region": "sample2"} - - pager = client.list(request=sample_request) - - results = list(pager) - assert len(results) == 6 - assert all(isinstance(i, compute.Router) for i in results) - - pages = list(client.list(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token - - -def test_list_bgp_routes_rest_use_cached_wrapped_rpc(): - # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, - # instead of constructing them on each call - with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: - client = RoutersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) +def test_insert_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) # Should wrap all calls on client creation assert wrapper_fn.call_count > 0 wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.list_bgp_routes in client._transport._wrapped_methods + assert client._transport.insert in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.list_bgp_routes] = mock_rpc + client._transport._wrapped_methods[client._transport.insert] = mock_rpc request = {} - client.list_bgp_routes(request) + client.insert(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list_bgp_routes(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.insert(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_list_bgp_routes_rest_required_fields( - request_type=compute.ListBgpRoutesRoutersRequest, -): +def test_insert_rest_required_fields(request_type=compute.InsertRouterRequest): transport_class = transports.RoutersRestTransport request_init = {} request_init["project"] = "" request_init["region"] = "" - request_init["router"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -4079,33 +4050,19 @@ def test_list_bgp_routes_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_bgp_routes._get_unset_required_fields(jsonified_request) + ).insert._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" - jsonified_request["router"] = "router_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_bgp_routes._get_unset_required_fields(jsonified_request) + ).insert._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "address_family", - "destination_prefix", - "filter", - "max_results", - "order_by", - "page_token", - "peer", - "policy_applied", - "return_partial_success", - "route_type", - ) - ) + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -4113,8 +4070,6 @@ def test_list_bgp_routes_rest_required_fields( assert jsonified_request["project"] == "project_value" assert "region" in jsonified_request assert jsonified_request["region"] == "region_value" - assert "router" in jsonified_request - assert jsonified_request["router"] == "router_value" client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), @@ -4123,7 +4078,7 @@ def test_list_bgp_routes_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.RoutersListBgpRoutes() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -4135,61 +4090,49 @@ def test_list_bgp_routes_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "get", + "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RoutersListBgpRoutes.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.list_bgp_routes(request) + response = client.insert(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_list_bgp_routes_rest_unset_required_fields(): +def test_insert_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.list_bgp_routes._get_unset_required_fields({}) + unset_fields = transport.insert._get_unset_required_fields({}) assert set(unset_fields) == ( - set( - ( - "addressFamily", - "destinationPrefix", - "filter", - "maxResults", - "orderBy", - "pageToken", - "peer", - "policyApplied", - "returnPartialSuccess", - "routeType", - ) - ) + set(("requestId",)) & set( ( "project", "region", - "router", + "routerResource", ) ) ) -def test_list_bgp_routes_rest_flattened(): +def test_insert_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4198,20 +4141,18 @@ def test_list_bgp_routes_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.RoutersListBgpRoutes() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method - sample_request = { - "project": "sample1", - "region": "sample2", - "router": "sample3", - } + sample_request = {"project": "sample1", "region": "sample2"} # get truthy value for each flattened field mock_args = dict( project="project_value", region="region_value", - router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") + ), ) mock_args.update(sample_request) @@ -4219,26 +4160,26 @@ def test_list_bgp_routes_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RoutersListBgpRoutes.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_bgp_routes(**mock_args) + client.insert(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/listBgpRoutes" + "%s/compute/beta/projects/{project}/regions/{region}/routers" % client.transport._host, args[1], ) -def test_list_bgp_routes_rest_flattened_error(transport: str = "rest"): +def test_insert_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4247,80 +4188,17 @@ def test_list_bgp_routes_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.list_bgp_routes( - compute.ListBgpRoutesRoutersRequest(), + client.insert( + compute.InsertRouterRequest(), project="project_value", region="region_value", - router="router_value", - ) - - -def test_list_bgp_routes_rest_pager(transport: str = "rest"): - client = RoutersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, - ) - - # Mock the http request call within the method and fake a response. - with mock.patch.object(Session, "request") as req: - # TODO(kbandes): remove this mock unless there's a good reason for it. - # with mock.patch.object(path_template, 'transcode') as transcode: - # Set the response as a series of pages - response = ( - compute.RoutersListBgpRoutes( - result=[ - compute.BgpRoute(), - compute.BgpRoute(), - compute.BgpRoute(), - ], - next_page_token="abc", - ), - compute.RoutersListBgpRoutes( - result=[], - next_page_token="def", - ), - compute.RoutersListBgpRoutes( - result=[ - compute.BgpRoute(), - ], - next_page_token="ghi", - ), - compute.RoutersListBgpRoutes( - result=[ - compute.BgpRoute(), - compute.BgpRoute(), - ], + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") ), ) - # Two responses for two calls - response = response + response - - # Wrap the values into proper Response objs - response = tuple(compute.RoutersListBgpRoutes.to_json(x) for x in response) - return_values = tuple(Response() for i in response) - for return_val, response_val in zip(return_values, response): - return_val._content = response_val.encode("UTF-8") - return_val.status_code = 200 - req.side_effect = return_values - - sample_request = { - "project": "sample1", - "region": "sample2", - "router": "sample3", - } - - pager = client.list_bgp_routes(request=sample_request) - - results = list(pager) - assert len(results) == 6 - assert all(isinstance(i, compute.BgpRoute) for i in results) - - pages = list(client.list_bgp_routes(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token -def test_list_route_policies_rest_use_cached_wrapped_rpc(): +def test_insert_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -4334,41 +4212,38 @@ def test_list_route_policies_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.list_route_policies in client._transport._wrapped_methods - ) + assert client._transport.insert in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.list_route_policies] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.insert] = mock_rpc request = {} - client.list_route_policies(request) + client.insert_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.list_route_policies(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.insert_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_list_route_policies_rest_required_fields( - request_type=compute.ListRoutePoliciesRoutersRequest, -): +def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequest): transport_class = transports.RoutersRestTransport request_init = {} request_init["project"] = "" request_init["region"] = "" - request_init["router"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -4379,28 +4254,19 @@ def test_list_route_policies_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_route_policies._get_unset_required_fields(jsonified_request) + ).insert._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" - jsonified_request["router"] = "router_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).list_route_policies._get_unset_required_fields(jsonified_request) + ).insert._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "filter", - "max_results", - "order_by", - "page_token", - "return_partial_success", - ) - ) + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -4408,8 +4274,6 @@ def test_list_route_policies_rest_required_fields( assert jsonified_request["project"] == "project_value" assert "region" in jsonified_request assert jsonified_request["region"] == "region_value" - assert "router" in jsonified_request - assert jsonified_request["router"] == "router_value" client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), @@ -4418,7 +4282,7 @@ def test_list_route_policies_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.RoutersListRoutePolicies() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -4430,56 +4294,49 @@ def test_list_route_policies_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "get", + "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RoutersListRoutePolicies.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.list_route_policies(request) + response = client.insert_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_list_route_policies_rest_unset_required_fields(): +def test_insert_unary_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.list_route_policies._get_unset_required_fields({}) + unset_fields = transport.insert._get_unset_required_fields({}) assert set(unset_fields) == ( - set( - ( - "filter", - "maxResults", - "orderBy", - "pageToken", - "returnPartialSuccess", - ) - ) + set(("requestId",)) & set( ( "project", "region", - "router", + "routerResource", ) ) ) -def test_list_route_policies_rest_flattened(): +def test_insert_unary_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4488,20 +4345,18 @@ def test_list_route_policies_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.RoutersListRoutePolicies() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method - sample_request = { - "project": "sample1", - "region": "sample2", - "router": "sample3", - } + sample_request = {"project": "sample1", "region": "sample2"} # get truthy value for each flattened field mock_args = dict( project="project_value", region="region_value", - router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") + ), ) mock_args.update(sample_request) @@ -4509,26 +4364,26 @@ def test_list_route_policies_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RoutersListRoutePolicies.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_route_policies(**mock_args) + client.insert_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/listRoutePolicies" + "%s/compute/beta/projects/{project}/regions/{region}/routers" % client.transport._host, args[1], ) -def test_list_route_policies_rest_flattened_error(transport: str = "rest"): +def test_insert_unary_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4537,80 +4392,17 @@ def test_list_route_policies_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.list_route_policies( - compute.ListRoutePoliciesRoutersRequest(), + client.insert_unary( + compute.InsertRouterRequest(), project="project_value", region="region_value", - router="router_value", - ) - - -def test_list_route_policies_rest_pager(transport: str = "rest"): - client = RoutersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport=transport, - ) - - # Mock the http request call within the method and fake a response. - with mock.patch.object(Session, "request") as req: - # TODO(kbandes): remove this mock unless there's a good reason for it. - # with mock.patch.object(path_template, 'transcode') as transcode: - # Set the response as a series of pages - response = ( - compute.RoutersListRoutePolicies( - result=[ - compute.RoutePolicy(), - compute.RoutePolicy(), - compute.RoutePolicy(), - ], - next_page_token="abc", - ), - compute.RoutersListRoutePolicies( - result=[], - next_page_token="def", - ), - compute.RoutersListRoutePolicies( - result=[ - compute.RoutePolicy(), - ], - next_page_token="ghi", - ), - compute.RoutersListRoutePolicies( - result=[ - compute.RoutePolicy(), - compute.RoutePolicy(), - ], + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") ), ) - # Two responses for two calls - response = response + response - - # Wrap the values into proper Response objs - response = tuple(compute.RoutersListRoutePolicies.to_json(x) for x in response) - return_values = tuple(Response() for i in response) - for return_val, response_val in zip(return_values, response): - return_val._content = response_val.encode("UTF-8") - return_val.status_code = 200 - req.side_effect = return_values - - sample_request = { - "project": "sample1", - "region": "sample2", - "router": "sample3", - } - - pager = client.list_route_policies(request=sample_request) - - results = list(pager) - assert len(results) == 6 - assert all(isinstance(i, compute.RoutePolicy) for i in results) - - pages = list(client.list_route_policies(request=sample_request).pages) - for page_, token in zip(pages, ["abc", "def", "ghi", ""]): - assert page_.raw_page.next_page_token == token -def test_patch_rest_use_cached_wrapped_rpc(): +def test_list_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -4624,39 +4416,34 @@ def test_patch_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.patch in client._transport._wrapped_methods + assert client._transport.list in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.patch] = mock_rpc + client._transport._wrapped_methods[client._transport.list] = mock_rpc request = {} - client.patch(request) + client.list(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.patch(request) + client.list(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_patch_rest_required_fields(request_type=compute.PatchRouterRequest): +def test_list_rest_required_fields(request_type=compute.ListRoutersRequest): transport_class = transports.RoutersRestTransport request_init = {} request_init["project"] = "" request_init["region"] = "" - request_init["router"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -4667,20 +4454,27 @@ def test_patch_rest_required_fields(request_type=compute.PatchRouterRequest): unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch._get_unset_required_fields(jsonified_request) + ).list._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" - jsonified_request["router"] = "router_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch._get_unset_required_fields(jsonified_request) + ).list._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set( + ( + "filter", + "max_results", + "order_by", + "page_token", + "return_partial_success", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -4688,8 +4482,6 @@ def test_patch_rest_required_fields(request_type=compute.PatchRouterRequest): assert jsonified_request["project"] == "project_value" assert "region" in jsonified_request assert jsonified_request["region"] == "region_value" - assert "router" in jsonified_request - assert jsonified_request["router"] == "router_value" client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), @@ -4698,7 +4490,7 @@ def test_patch_rest_required_fields(request_type=compute.PatchRouterRequest): request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RouterList() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -4710,50 +4502,55 @@ def test_patch_rest_required_fields(request_type=compute.PatchRouterRequest): pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "patch", + "method": "get", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RouterList.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch(request) + response = client.list(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_patch_rest_unset_required_fields(): +def test_list_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.patch._get_unset_required_fields({}) + unset_fields = transport.list._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + "returnPartialSuccess", + ) + ) & set( ( "project", "region", - "router", - "routerResource", ) ) ) -def test_patch_rest_flattened(): +def test_list_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4762,23 +4559,15 @@ def test_patch_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RouterList() # get arguments that satisfy an http rule for this method - sample_request = { - "project": "sample1", - "region": "sample2", - "router": "sample3", - } + sample_request = {"project": "sample1", "region": "sample2"} # get truthy value for each flattened field mock_args = dict( project="project_value", region="region_value", - router="router_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), ) mock_args.update(sample_request) @@ -4786,26 +4575,26 @@ def test_patch_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RouterList.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch(**mock_args) + client.list(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" + "%s/compute/beta/projects/{project}/regions/{region}/routers" % client.transport._host, args[1], ) -def test_patch_rest_flattened_error(transport: str = "rest"): +def test_list_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4814,58 +4603,113 @@ def test_patch_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.patch( - compute.PatchRouterRequest(), + client.list( + compute.ListRoutersRequest(), project="project_value", region="region_value", - router="router_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), ) -def test_patch_unary_rest_use_cached_wrapped_rpc(): - # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, - # instead of constructing them on each call - with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: - client = RoutersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) +def test_list_rest_pager(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) - # Should wrap all calls on client creation - assert wrapper_fn.call_count > 0 - wrapper_fn.reset_mock() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # TODO(kbandes): remove this mock unless there's a good reason for it. + # with mock.patch.object(path_template, 'transcode') as transcode: + # Set the response as a series of pages + response = ( + compute.RouterList( + items=[ + compute.Router(), + compute.Router(), + compute.Router(), + ], + next_page_token="abc", + ), + compute.RouterList( + items=[], + next_page_token="def", + ), + compute.RouterList( + items=[ + compute.Router(), + ], + next_page_token="ghi", + ), + compute.RouterList( + items=[ + compute.Router(), + compute.Router(), + ], + ), + ) + # Two responses for two calls + response = response + response - # Ensure method has been cached - assert client._transport.patch in client._transport._wrapped_methods + # Wrap the values into proper Response objs + response = tuple(compute.RouterList.to_json(x) for x in response) + return_values = tuple(Response() for i in response) + for return_val, response_val in zip(return_values, response): + return_val._content = response_val.encode("UTF-8") + return_val.status_code = 200 + req.side_effect = return_values + + sample_request = {"project": "sample1", "region": "sample2"} + + pager = client.list(request=sample_request) + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.Router) for i in results) + + pages = list(client.list(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_list_bgp_routes_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.list_bgp_routes in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.patch] = mock_rpc + client._transport._wrapped_methods[client._transport.list_bgp_routes] = mock_rpc request = {} - client.patch_unary(request) + client.list_bgp_routes(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.patch_unary(request) + client.list_bgp_routes(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterRequest): +def test_list_bgp_routes_rest_required_fields( + request_type=compute.ListBgpRoutesRoutersRequest, +): transport_class = transports.RoutersRestTransport request_init = {} @@ -4882,7 +4726,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterReques unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch._get_unset_required_fields(jsonified_request) + ).list_bgp_routes._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -4893,9 +4737,22 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterReques unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch._get_unset_required_fields(jsonified_request) + ).list_bgp_routes._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set( + ( + "address_family", + "destination_prefix", + "filter", + "max_results", + "order_by", + "page_token", + "peer", + "policy_applied", + "return_partial_success", + "route_type", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -4913,7 +4770,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterReques request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RoutersListBgpRoutes() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -4925,50 +4782,61 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterReques pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "patch", + "method": "get", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RoutersListBgpRoutes.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_unary(request) + response = client.list_bgp_routes(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_patch_unary_rest_unset_required_fields(): +def test_list_bgp_routes_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.patch._get_unset_required_fields({}) + unset_fields = transport.list_bgp_routes._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set( + ( + "addressFamily", + "destinationPrefix", + "filter", + "maxResults", + "orderBy", + "pageToken", + "peer", + "policyApplied", + "returnPartialSuccess", + "routeType", + ) + ) & set( ( "project", "region", "router", - "routerResource", ) ) ) -def test_patch_unary_rest_flattened(): +def test_list_bgp_routes_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4977,7 +4845,7 @@ def test_patch_unary_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RoutersListBgpRoutes() # get arguments that satisfy an http rule for this method sample_request = { @@ -4991,9 +4859,6 @@ def test_patch_unary_rest_flattened(): project="project_value", region="region_value", router="router_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), ) mock_args.update(sample_request) @@ -5001,26 +4866,26 @@ def test_patch_unary_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RoutersListBgpRoutes.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_unary(**mock_args) + client.list_bgp_routes(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/listBgpRoutes" % client.transport._host, args[1], ) -def test_patch_unary_rest_flattened_error(transport: str = "rest"): +def test_list_bgp_routes_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5029,18 +4894,80 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.patch_unary( - compute.PatchRouterRequest(), + client.list_bgp_routes( + compute.ListBgpRoutesRoutersRequest(), project="project_value", region="region_value", router="router_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") + ) + + +def test_list_bgp_routes_rest_pager(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # TODO(kbandes): remove this mock unless there's a good reason for it. + # with mock.patch.object(path_template, 'transcode') as transcode: + # Set the response as a series of pages + response = ( + compute.RoutersListBgpRoutes( + result=[ + compute.BgpRoute(), + compute.BgpRoute(), + compute.BgpRoute(), + ], + next_page_token="abc", + ), + compute.RoutersListBgpRoutes( + result=[], + next_page_token="def", + ), + compute.RoutersListBgpRoutes( + result=[ + compute.BgpRoute(), + ], + next_page_token="ghi", + ), + compute.RoutersListBgpRoutes( + result=[ + compute.BgpRoute(), + compute.BgpRoute(), + ], ), ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.RoutersListBgpRoutes.to_json(x) for x in response) + return_values = tuple(Response() for i in response) + for return_val, response_val in zip(return_values, response): + return_val._content = response_val.encode("UTF-8") + return_val.status_code = 200 + req.side_effect = return_values + + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + pager = client.list_bgp_routes(request=sample_request) -def test_patch_route_policy_rest_use_cached_wrapped_rpc(): + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.BgpRoute) for i in results) + + pages = list(client.list_bgp_routes(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_list_named_sets_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -5054,38 +4981,30 @@ def test_patch_route_policy_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.patch_route_policy in client._transport._wrapped_methods - ) + assert client._transport.list_named_sets in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.patch_route_policy] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.list_named_sets] = mock_rpc request = {} - client.patch_route_policy(request) + client.list_named_sets(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.patch_route_policy(request) + client.list_named_sets(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_patch_route_policy_rest_required_fields( - request_type=compute.PatchRoutePolicyRouterRequest, +def test_list_named_sets_rest_required_fields( + request_type=compute.ListNamedSetsRoutersRequest, ): transport_class = transports.RoutersRestTransport @@ -5103,7 +5022,7 @@ def test_patch_route_policy_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch_route_policy._get_unset_required_fields(jsonified_request) + ).list_named_sets._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -5114,9 +5033,17 @@ def test_patch_route_policy_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch_route_policy._get_unset_required_fields(jsonified_request) + ).list_named_sets._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set( + ( + "filter", + "max_results", + "order_by", + "page_token", + "return_partial_success", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -5134,7 +5061,7 @@ def test_patch_route_policy_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RoutersListNamedSets() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -5146,50 +5073,56 @@ def test_patch_route_policy_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "get", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RoutersListNamedSets.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_route_policy(request) + response = client.list_named_sets(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_patch_route_policy_rest_unset_required_fields(): +def test_list_named_sets_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.patch_route_policy._get_unset_required_fields({}) + unset_fields = transport.list_named_sets._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + "returnPartialSuccess", + ) + ) & set( ( "project", "region", - "routePolicyResource", "router", ) ) ) -def test_patch_route_policy_rest_flattened(): +def test_list_named_sets_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5198,7 +5131,7 @@ def test_patch_route_policy_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RoutersListNamedSets() # get arguments that satisfy an http rule for this method sample_request = { @@ -5212,7 +5145,6 @@ def test_patch_route_policy_rest_flattened(): project="project_value", region="region_value", router="router_value", - route_policy_resource=compute.RoutePolicy(description="description_value"), ) mock_args.update(sample_request) @@ -5220,26 +5152,26 @@ def test_patch_route_policy_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RoutersListNamedSets.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_route_policy(**mock_args) + client.list_named_sets(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/patchRoutePolicy" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/listNamedSets" % client.transport._host, args[1], ) -def test_patch_route_policy_rest_flattened_error(transport: str = "rest"): +def test_list_named_sets_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5248,31 +5180,95 @@ def test_patch_route_policy_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.patch_route_policy( - compute.PatchRoutePolicyRouterRequest(), + client.list_named_sets( + compute.ListNamedSetsRoutersRequest(), project="project_value", region="region_value", router="router_value", - route_policy_resource=compute.RoutePolicy(description="description_value"), ) -def test_patch_route_policy_unary_rest_use_cached_wrapped_rpc(): - # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, - # instead of constructing them on each call - with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: - client = RoutersClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) - - # Should wrap all calls on client creation - assert wrapper_fn.call_count > 0 - wrapper_fn.reset_mock() +def test_list_named_sets_rest_pager(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) - # Ensure method has been cached + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # TODO(kbandes): remove this mock unless there's a good reason for it. + # with mock.patch.object(path_template, 'transcode') as transcode: + # Set the response as a series of pages + response = ( + compute.RoutersListNamedSets( + result=[ + compute.NamedSet(), + compute.NamedSet(), + compute.NamedSet(), + ], + next_page_token="abc", + ), + compute.RoutersListNamedSets( + result=[], + next_page_token="def", + ), + compute.RoutersListNamedSets( + result=[ + compute.NamedSet(), + ], + next_page_token="ghi", + ), + compute.RoutersListNamedSets( + result=[ + compute.NamedSet(), + compute.NamedSet(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.RoutersListNamedSets.to_json(x) for x in response) + return_values = tuple(Response() for i in response) + for return_val, response_val in zip(return_values, response): + return_val._content = response_val.encode("UTF-8") + return_val.status_code = 200 + req.side_effect = return_values + + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + pager = client.list_named_sets(request=sample_request) + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.NamedSet) for i in results) + + pages = list(client.list_named_sets(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_list_route_policies_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached assert ( - client._transport.patch_route_policy in client._transport._wrapped_methods + client._transport.list_route_policies in client._transport._wrapped_methods ) # Replace cached wrapped function with mock @@ -5280,29 +5276,25 @@ def test_patch_route_policy_unary_rest_use_cached_wrapped_rpc(): mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.patch_route_policy] = ( + client._transport._wrapped_methods[client._transport.list_route_policies] = ( mock_rpc ) request = {} - client.patch_route_policy_unary(request) + client.list_route_policies(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - # Operation methods build a cached wrapper on first rpc call - # subsequent calls should use the cached wrapper - wrapper_fn.reset_mock() - - client.patch_route_policy_unary(request) + client.list_route_policies(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_patch_route_policy_unary_rest_required_fields( - request_type=compute.PatchRoutePolicyRouterRequest, +def test_list_route_policies_rest_required_fields( + request_type=compute.ListRoutePoliciesRoutersRequest, ): transport_class = transports.RoutersRestTransport @@ -5320,7 +5312,7 @@ def test_patch_route_policy_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch_route_policy._get_unset_required_fields(jsonified_request) + ).list_route_policies._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -5331,9 +5323,17 @@ def test_patch_route_policy_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).patch_route_policy._get_unset_required_fields(jsonified_request) + ).list_route_policies._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("request_id",)) + assert not set(unset_fields) - set( + ( + "filter", + "max_results", + "order_by", + "page_token", + "return_partial_success", + ) + ) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -5351,7 +5351,7 @@ def test_patch_route_policy_unary_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RoutersListRoutePolicies() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -5363,50 +5363,56 @@ def test_patch_route_policy_unary_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "get", "query_params": pb_request, } - transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RoutersListRoutePolicies.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_route_policy_unary(request) + response = client.list_route_policies(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_patch_route_policy_unary_rest_unset_required_fields(): +def test_list_route_policies_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.patch_route_policy._get_unset_required_fields({}) + unset_fields = transport.list_route_policies._get_unset_required_fields({}) assert set(unset_fields) == ( - set(("requestId",)) + set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + "returnPartialSuccess", + ) + ) & set( ( "project", "region", - "routePolicyResource", "router", ) ) ) -def test_patch_route_policy_unary_rest_flattened(): +def test_list_route_policies_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5415,7 +5421,7 @@ def test_patch_route_policy_unary_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.Operation() + return_value = compute.RoutersListRoutePolicies() # get arguments that satisfy an http rule for this method sample_request = { @@ -5429,7 +5435,6 @@ def test_patch_route_policy_unary_rest_flattened(): project="project_value", region="region_value", router="router_value", - route_policy_resource=compute.RoutePolicy(description="description_value"), ) mock_args.update(sample_request) @@ -5437,26 +5442,26 @@ def test_patch_route_policy_unary_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.RoutersListRoutePolicies.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_route_policy_unary(**mock_args) + client.list_route_policies(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/patchRoutePolicy" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/listRoutePolicies" % client.transport._host, args[1], ) -def test_patch_route_policy_unary_rest_flattened_error(transport: str = "rest"): +def test_list_route_policies_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5465,16 +5470,80 @@ def test_patch_route_policy_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.patch_route_policy_unary( - compute.PatchRoutePolicyRouterRequest(), + client.list_route_policies( + compute.ListRoutePoliciesRoutersRequest(), project="project_value", region="region_value", router="router_value", - route_policy_resource=compute.RoutePolicy(description="description_value"), ) -def test_preview_rest_use_cached_wrapped_rpc(): +def test_list_route_policies_rest_pager(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # TODO(kbandes): remove this mock unless there's a good reason for it. + # with mock.patch.object(path_template, 'transcode') as transcode: + # Set the response as a series of pages + response = ( + compute.RoutersListRoutePolicies( + result=[ + compute.RoutePolicy(), + compute.RoutePolicy(), + compute.RoutePolicy(), + ], + next_page_token="abc", + ), + compute.RoutersListRoutePolicies( + result=[], + next_page_token="def", + ), + compute.RoutersListRoutePolicies( + result=[ + compute.RoutePolicy(), + ], + next_page_token="ghi", + ), + compute.RoutersListRoutePolicies( + result=[ + compute.RoutePolicy(), + compute.RoutePolicy(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.RoutersListRoutePolicies.to_json(x) for x in response) + return_values = tuple(Response() for i in response) + for return_val, response_val in zip(return_values, response): + return_val._content = response_val.encode("UTF-8") + return_val.status_code = 200 + req.side_effect = return_values + + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + pager = client.list_route_policies(request=sample_request) + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.RoutePolicy) for i in results) + + pages = list(client.list_route_policies(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_patch_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -5488,29 +5557,33 @@ def test_preview_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.preview in client._transport._wrapped_methods + assert client._transport.patch in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.preview] = mock_rpc + client._transport._wrapped_methods[client._transport.patch] = mock_rpc request = {} - client.preview(request) + client.patch(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.preview(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.patch(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest): +def test_patch_rest_required_fields(request_type=compute.PatchRouterRequest): transport_class = transports.RoutersRestTransport request_init = {} @@ -5527,7 +5600,7 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest) unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).preview._get_unset_required_fields(jsonified_request) + ).patch._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -5538,7 +5611,9 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest) unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).preview._get_unset_required_fields(jsonified_request) + ).patch._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -5556,7 +5631,7 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest) request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.RoutersPreviewResponse() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -5568,7 +5643,7 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest) pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "patch", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -5578,28 +5653,28 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest) response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RoutersPreviewResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.preview(request) + response = client.patch(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_preview_rest_unset_required_fields(): +def test_patch_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.preview._get_unset_required_fields({}) + unset_fields = transport.patch._get_unset_required_fields({}) assert set(unset_fields) == ( - set(()) + set(("requestId",)) & set( ( "project", @@ -5611,7 +5686,7 @@ def test_preview_rest_unset_required_fields(): ) -def test_preview_rest_flattened(): +def test_patch_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5620,7 +5695,7 @@ def test_preview_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.RoutersPreviewResponse() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = { @@ -5644,26 +5719,26 @@ def test_preview_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RoutersPreviewResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.preview(**mock_args) + client.patch(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/preview" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" % client.transport._host, args[1], ) -def test_preview_rest_flattened_error(transport: str = "rest"): +def test_patch_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5672,8 +5747,8 @@ def test_preview_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.preview( - compute.PreviewRouterRequest(), + client.patch( + compute.PatchRouterRequest(), project="project_value", region="region_value", router="router_value", @@ -5683,7 +5758,7 @@ def test_preview_rest_flattened_error(transport: str = "rest"): ) -def test_test_iam_permissions_rest_use_cached_wrapped_rpc(): +def test_patch_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -5697,41 +5772,39 @@ def test_test_iam_permissions_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.test_iam_permissions in client._transport._wrapped_methods - ) + assert client._transport.patch in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.test_iam_permissions] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.patch] = mock_rpc request = {} - client.test_iam_permissions(request) + client.patch_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.test_iam_permissions(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.patch_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_test_iam_permissions_rest_required_fields( - request_type=compute.TestIamPermissionsRouterRequest, -): +def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterRequest): transport_class = transports.RoutersRestTransport request_init = {} request_init["project"] = "" request_init["region"] = "" - request_init["resource"] = "" + request_init["router"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -5742,18 +5815,20 @@ def test_test_iam_permissions_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).test_iam_permissions._get_unset_required_fields(jsonified_request) + ).patch._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" - jsonified_request["resource"] = "resource_value" + jsonified_request["router"] = "router_value" unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).test_iam_permissions._get_unset_required_fields(jsonified_request) + ).patch._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) # verify required fields with non-default values are left alone @@ -5761,8 +5836,8 @@ def test_test_iam_permissions_rest_required_fields( assert jsonified_request["project"] == "project_value" assert "region" in jsonified_request assert jsonified_request["region"] == "region_value" - assert "resource" in jsonified_request - assert jsonified_request["resource"] == "resource_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), @@ -5771,7 +5846,7 @@ def test_test_iam_permissions_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.TestPermissionsResponse() + return_value = compute.Operation() # Mock the http request call within the method and fake a response. with mock.patch.object(Session, "request") as req: # We need to mock transcode() because providing default values @@ -5783,7 +5858,7 @@ def test_test_iam_permissions_rest_required_fields( pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "post", + "method": "patch", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -5793,40 +5868,40 @@ def test_test_iam_permissions_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.TestPermissionsResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.test_iam_permissions(request) + response = client.patch_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_test_iam_permissions_rest_unset_required_fields(): +def test_patch_unary_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.test_iam_permissions._get_unset_required_fields({}) + unset_fields = transport.patch._get_unset_required_fields({}) assert set(unset_fields) == ( - set(()) + set(("requestId",)) & set( ( "project", "region", - "resource", - "testPermissionsRequestResource", + "router", + "routerResource", ) ) ) -def test_test_iam_permissions_rest_flattened(): +def test_patch_unary_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5835,22 +5910,22 @@ def test_test_iam_permissions_rest_flattened(): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.TestPermissionsResponse() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = { "project": "sample1", "region": "sample2", - "resource": "sample3", + "router": "sample3", } # get truthy value for each flattened field mock_args = dict( project="project_value", region="region_value", - resource="resource_value", - test_permissions_request_resource=compute.TestPermissionsRequest( - permissions=["permissions_value"] + router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") ), ) mock_args.update(sample_request) @@ -5859,26 +5934,26 @@ def test_test_iam_permissions_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.TestPermissionsResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.test_iam_permissions(**mock_args) + client.patch_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{resource}/testIamPermissions" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" % client.transport._host, args[1], ) -def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): +def test_patch_unary_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5887,18 +5962,18 @@ def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.test_iam_permissions( - compute.TestIamPermissionsRouterRequest(), + client.patch_unary( + compute.PatchRouterRequest(), project="project_value", region="region_value", - resource="resource_value", - test_permissions_request_resource=compute.TestPermissionsRequest( - permissions=["permissions_value"] + router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") ), ) -def test_update_rest_use_cached_wrapped_rpc(): +def test_patch_named_set_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -5912,17 +5987,17 @@ def test_update_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.update in client._transport._wrapped_methods + assert client._transport.patch_named_set in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.update] = mock_rpc + client._transport._wrapped_methods[client._transport.patch_named_set] = mock_rpc request = {} - client.update(request) + client.patch_named_set(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -5931,14 +6006,16 @@ def test_update_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.update(request) + client.patch_named_set(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_update_rest_required_fields(request_type=compute.UpdateRouterRequest): +def test_patch_named_set_rest_required_fields( + request_type=compute.PatchNamedSetRouterRequest, +): transport_class = transports.RoutersRestTransport request_init = {} @@ -5955,7 +6032,7 @@ def test_update_rest_required_fields(request_type=compute.UpdateRouterRequest): unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update._get_unset_required_fields(jsonified_request) + ).patch_named_set._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -5966,7 +6043,7 @@ def test_update_rest_required_fields(request_type=compute.UpdateRouterRequest): unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update._get_unset_required_fields(jsonified_request) + ).patch_named_set._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -5998,7 +6075,7 @@ def test_update_rest_required_fields(request_type=compute.UpdateRouterRequest): pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "put", + "method": "post", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -6015,33 +6092,33 @@ def test_update_rest_required_fields(request_type=compute.UpdateRouterRequest): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.update(request) + response = client.patch_named_set(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_update_rest_unset_required_fields(): +def test_patch_named_set_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.update._get_unset_required_fields({}) + unset_fields = transport.patch_named_set._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( + "namedSetResource", "project", "region", "router", - "routerResource", ) ) ) -def test_update_rest_flattened(): +def test_patch_named_set_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6064,9 +6141,7 @@ def test_update_rest_flattened(): project="project_value", region="region_value", router="router_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), + named_set_resource=compute.NamedSet(description="description_value"), ) mock_args.update(sample_request) @@ -6080,20 +6155,20 @@ def test_update_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.update(**mock_args) + client.patch_named_set(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/patchNamedSet" % client.transport._host, args[1], ) -def test_update_rest_flattened_error(transport: str = "rest"): +def test_patch_named_set_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6102,18 +6177,16 @@ def test_update_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.update( - compute.UpdateRouterRequest(), + client.patch_named_set( + compute.PatchNamedSetRouterRequest(), project="project_value", region="region_value", router="router_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), + named_set_resource=compute.NamedSet(description="description_value"), ) -def test_update_unary_rest_use_cached_wrapped_rpc(): +def test_patch_named_set_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -6127,17 +6200,17 @@ def test_update_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.update in client._transport._wrapped_methods + assert client._transport.patch_named_set in client._transport._wrapped_methods # Replace cached wrapped function with mock mock_rpc = mock.Mock() mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.update] = mock_rpc + client._transport._wrapped_methods[client._transport.patch_named_set] = mock_rpc request = {} - client.update_unary(request) + client.patch_named_set_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -6146,14 +6219,16 @@ def test_update_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.update_unary(request) + client.patch_named_set_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_update_unary_rest_required_fields(request_type=compute.UpdateRouterRequest): +def test_patch_named_set_unary_rest_required_fields( + request_type=compute.PatchNamedSetRouterRequest, +): transport_class = transports.RoutersRestTransport request_init = {} @@ -6170,7 +6245,7 @@ def test_update_unary_rest_required_fields(request_type=compute.UpdateRouterRequ unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update._get_unset_required_fields(jsonified_request) + ).patch_named_set._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -6181,7 +6256,7 @@ def test_update_unary_rest_required_fields(request_type=compute.UpdateRouterRequ unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update._get_unset_required_fields(jsonified_request) + ).patch_named_set._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -6213,7 +6288,7 @@ def test_update_unary_rest_required_fields(request_type=compute.UpdateRouterRequ pb_request = request_type.pb(request) transcode_result = { "uri": "v1/sample_method", - "method": "put", + "method": "post", "query_params": pb_request, } transcode_result["body"] = pb_request @@ -6230,33 +6305,33 @@ def test_update_unary_rest_required_fields(request_type=compute.UpdateRouterRequ req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.update_unary(request) + response = client.patch_named_set_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_update_unary_rest_unset_required_fields(): +def test_patch_named_set_unary_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.update._get_unset_required_fields({}) + unset_fields = transport.patch_named_set._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( ( + "namedSetResource", "project", "region", "router", - "routerResource", ) ) ) -def test_update_unary_rest_flattened(): +def test_patch_named_set_unary_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6279,9 +6354,7 @@ def test_update_unary_rest_flattened(): project="project_value", region="region_value", router="router_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), + named_set_resource=compute.NamedSet(description="description_value"), ) mock_args.update(sample_request) @@ -6295,20 +6368,20 @@ def test_update_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.update_unary(**mock_args) + client.patch_named_set_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/patchNamedSet" % client.transport._host, args[1], ) -def test_update_unary_rest_flattened_error(transport: str = "rest"): +def test_patch_named_set_unary_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6317,18 +6390,16 @@ def test_update_unary_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.update_unary( - compute.UpdateRouterRequest(), + client.patch_named_set_unary( + compute.PatchNamedSetRouterRequest(), project="project_value", region="region_value", router="router_value", - router_resource=compute.Router( - bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") - ), + named_set_resource=compute.NamedSet(description="description_value"), ) -def test_update_route_policy_rest_use_cached_wrapped_rpc(): +def test_patch_route_policy_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -6343,7 +6414,7 @@ def test_update_route_policy_rest_use_cached_wrapped_rpc(): # Ensure method has been cached assert ( - client._transport.update_route_policy in client._transport._wrapped_methods + client._transport.patch_route_policy in client._transport._wrapped_methods ) # Replace cached wrapped function with mock @@ -6351,12 +6422,12 @@ def test_update_route_policy_rest_use_cached_wrapped_rpc(): mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.update_route_policy] = ( + client._transport._wrapped_methods[client._transport.patch_route_policy] = ( mock_rpc ) request = {} - client.update_route_policy(request) + client.patch_route_policy(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -6365,15 +6436,15 @@ def test_update_route_policy_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.update_route_policy(request) + client.patch_route_policy(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_update_route_policy_rest_required_fields( - request_type=compute.UpdateRoutePolicyRouterRequest, +def test_patch_route_policy_rest_required_fields( + request_type=compute.PatchRoutePolicyRouterRequest, ): transport_class = transports.RoutersRestTransport @@ -6391,7 +6462,7 @@ def test_update_route_policy_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update_route_policy._get_unset_required_fields(jsonified_request) + ).patch_route_policy._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -6402,7 +6473,7 @@ def test_update_route_policy_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update_route_policy._get_unset_required_fields(jsonified_request) + ).patch_route_policy._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -6451,19 +6522,19 @@ def test_update_route_policy_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.update_route_policy(request) + response = client.patch_route_policy(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_update_route_policy_rest_unset_required_fields(): +def test_patch_route_policy_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.update_route_policy._get_unset_required_fields({}) + unset_fields = transport.patch_route_policy._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( @@ -6477,7 +6548,7 @@ def test_update_route_policy_rest_unset_required_fields(): ) -def test_update_route_policy_rest_flattened(): +def test_patch_route_policy_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6514,20 +6585,20 @@ def test_update_route_policy_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.update_route_policy(**mock_args) + client.patch_route_policy(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/updateRoutePolicy" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/patchRoutePolicy" % client.transport._host, args[1], ) -def test_update_route_policy_rest_flattened_error(transport: str = "rest"): +def test_patch_route_policy_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6536,8 +6607,8 @@ def test_update_route_policy_rest_flattened_error(transport: str = "rest"): # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.update_route_policy( - compute.UpdateRoutePolicyRouterRequest(), + client.patch_route_policy( + compute.PatchRoutePolicyRouterRequest(), project="project_value", region="region_value", router="router_value", @@ -6545,7 +6616,7 @@ def test_update_route_policy_rest_flattened_error(transport: str = "rest"): ) -def test_update_route_policy_unary_rest_use_cached_wrapped_rpc(): +def test_patch_route_policy_unary_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: @@ -6560,7 +6631,7 @@ def test_update_route_policy_unary_rest_use_cached_wrapped_rpc(): # Ensure method has been cached assert ( - client._transport.update_route_policy in client._transport._wrapped_methods + client._transport.patch_route_policy in client._transport._wrapped_methods ) # Replace cached wrapped function with mock @@ -6568,12 +6639,12 @@ def test_update_route_policy_unary_rest_use_cached_wrapped_rpc(): mock_rpc.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client._transport._wrapped_methods[client._transport.update_route_policy] = ( + client._transport._wrapped_methods[client._transport.patch_route_policy] = ( mock_rpc ) request = {} - client.update_route_policy_unary(request) + client.patch_route_policy_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -6582,15 +6653,15 @@ def test_update_route_policy_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.update_route_policy_unary(request) + client.patch_route_policy_unary(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 assert mock_rpc.call_count == 2 -def test_update_route_policy_unary_rest_required_fields( - request_type=compute.UpdateRoutePolicyRouterRequest, +def test_patch_route_policy_unary_rest_required_fields( + request_type=compute.PatchRoutePolicyRouterRequest, ): transport_class = transports.RoutersRestTransport @@ -6608,7 +6679,7 @@ def test_update_route_policy_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update_route_policy._get_unset_required_fields(jsonified_request) + ).patch_route_policy._get_unset_required_fields(jsonified_request) jsonified_request.update(unset_fields) # verify required fields with default values are now present @@ -6619,7 +6690,7 @@ def test_update_route_policy_unary_rest_required_fields( unset_fields = transport_class( credentials=ga_credentials.AnonymousCredentials() - ).update_route_policy._get_unset_required_fields(jsonified_request) + ).patch_route_policy._get_unset_required_fields(jsonified_request) # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set(("request_id",)) jsonified_request.update(unset_fields) @@ -6668,19 +6739,19 @@ def test_update_route_policy_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.update_route_policy_unary(request) + response = client.patch_route_policy_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert expected_params == actual_params -def test_update_route_policy_unary_rest_unset_required_fields(): +def test_patch_route_policy_unary_rest_unset_required_fields(): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials ) - unset_fields = transport.update_route_policy._get_unset_required_fields({}) + unset_fields = transport.patch_route_policy._get_unset_required_fields({}) assert set(unset_fields) == ( set(("requestId",)) & set( @@ -6694,7 +6765,7 @@ def test_update_route_policy_unary_rest_unset_required_fields(): ) -def test_update_route_policy_unary_rest_flattened(): +def test_patch_route_policy_unary_rest_flattened(): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6731,20 +6802,20 @@ def test_update_route_policy_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.update_route_policy_unary(**mock_args) + client.patch_route_policy_unary(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( - "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/updateRoutePolicy" + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/patchRoutePolicy" % client.transport._host, args[1], ) -def test_update_route_policy_unary_rest_flattened_error(transport: str = "rest"): +def test_patch_route_policy_unary_rest_flattened_error(transport: str = "rest"): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6753,8 +6824,8 @@ def test_update_route_policy_unary_rest_flattened_error(transport: str = "rest") # Attempting to call a method with both a request object and flattened # fields is an error. with pytest.raises(ValueError): - client.update_route_policy_unary( - compute.UpdateRoutePolicyRouterRequest(), + client.patch_route_policy_unary( + compute.PatchRoutePolicyRouterRequest(), project="project_value", region="region_value", router="router_value", @@ -6762,53 +6833,1771 @@ def test_update_route_policy_unary_rest_flattened_error(transport: str = "rest") ) -def test_credentials_transport_error(): - # It is an error to provide credentials and a transport instance. - transport = transports.RoutersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): +def test_preview_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + transport="rest", ) - # It is an error to provide a credentials file and a transport instance. - transport = transports.RoutersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = RoutersClient( - client_options={"credentials_file": "credentials.json"}, - transport=transport, - ) + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() - # It is an error to provide an api_key and a transport instance. - transport = transports.RoutersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = RoutersClient( - client_options=options, - transport=transport, - ) + # Ensure method has been cached + assert client._transport.preview in client._transport._wrapped_methods - # It is an error to provide an api_key and a credential. - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = RoutersClient( - client_options=options, credentials=ga_credentials.AnonymousCredentials() + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. ) + client._transport._wrapped_methods[client._transport.preview] = mock_rpc - # It is an error to provide scopes and a transport instance. - transport = transports.RoutersRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = RoutersClient( + request = {} + client.preview(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.preview(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest): + transport_class = transports.RoutersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["router"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).preview._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).preview._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" + + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.RoutersPreviewResponse() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.RoutersPreviewResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.preview(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_preview_rest_unset_required_fields(): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.preview._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(()) + & set( + ( + "project", + "region", + "router", + "routerResource", + ) + ) + ) + + +def test_preview_rest_flattened(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.RoutersPreviewResponse() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.RoutersPreviewResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.preview(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/preview" + % client.transport._host, + args[1], + ) + + +def test_preview_rest_flattened_error(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.preview( + compute.PreviewRouterRequest(), + project="project_value", + region="region_value", + router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") + ), + ) + + +def test_test_iam_permissions_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._transport.test_iam_permissions in client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.test_iam_permissions] = ( + mock_rpc + ) + + request = {} + client.test_iam_permissions(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.test_iam_permissions(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_test_iam_permissions_rest_required_fields( + request_type=compute.TestIamPermissionsRouterRequest, +): + transport_class = transports.RoutersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["resource"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).test_iam_permissions._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["resource"] = "resource_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).test_iam_permissions._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + assert "resource" in jsonified_request + assert jsonified_request["resource"] == "resource_value" + + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.TestPermissionsResponse() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.TestPermissionsResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.test_iam_permissions(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_test_iam_permissions_rest_unset_required_fields(): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.test_iam_permissions._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(()) + & set( + ( + "project", + "region", + "resource", + "testPermissionsRequestResource", + ) + ) + ) + + +def test_test_iam_permissions_rest_flattened(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.TestPermissionsResponse() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "resource": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + resource="resource_value", + test_permissions_request_resource=compute.TestPermissionsRequest( + permissions=["permissions_value"] + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.TestPermissionsResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.test_iam_permissions(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/regions/{region}/routers/{resource}/testIamPermissions" + % client.transport._host, + args[1], + ) + + +def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.test_iam_permissions( + compute.TestIamPermissionsRouterRequest(), + project="project_value", + region="region_value", + resource="resource_value", + test_permissions_request_resource=compute.TestPermissionsRequest( + permissions=["permissions_value"] + ), + ) + + +def test_update_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.update in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.update] = mock_rpc + + request = {} + client.update(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_update_rest_required_fields(request_type=compute.UpdateRouterRequest): + transport_class = transports.RoutersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["router"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" + + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "put", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.update(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_update_rest_unset_required_fields(): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.update._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "project", + "region", + "router", + "routerResource", + ) + ) + ) + + +def test_update_rest_flattened(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.update(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" + % client.transport._host, + args[1], + ) + + +def test_update_rest_flattened_error(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.update( + compute.UpdateRouterRequest(), + project="project_value", + region="region_value", + router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") + ), + ) + + +def test_update_unary_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.update in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.update] = mock_rpc + + request = {} + client.update_unary(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_unary(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_update_unary_rest_required_fields(request_type=compute.UpdateRouterRequest): + transport_class = transports.RoutersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["router"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" + + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "put", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.update_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_update_unary_rest_unset_required_fields(): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.update._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "project", + "region", + "router", + "routerResource", + ) + ) + ) + + +def test_update_unary_rest_flattened(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.update_unary(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}" + % client.transport._host, + args[1], + ) + + +def test_update_unary_rest_flattened_error(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.update_unary( + compute.UpdateRouterRequest(), + project="project_value", + region="region_value", + router="router_value", + router_resource=compute.Router( + bgp=compute.RouterBgp(advertise_mode="advertise_mode_value") + ), + ) + + +def test_update_named_set_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.update_named_set in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.update_named_set] = ( + mock_rpc + ) + + request = {} + client.update_named_set(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_named_set(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_update_named_set_rest_required_fields( + request_type=compute.UpdateNamedSetRouterRequest, +): + transport_class = transports.RoutersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["router"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_named_set._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_named_set._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" + + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.update_named_set(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_update_named_set_rest_unset_required_fields(): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.update_named_set._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "namedSetResource", + "project", + "region", + "router", + ) + ) + ) + + +def test_update_named_set_rest_flattened(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + router="router_value", + named_set_resource=compute.NamedSet(description="description_value"), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.update_named_set(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/updateNamedSet" + % client.transport._host, + args[1], + ) + + +def test_update_named_set_rest_flattened_error(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.update_named_set( + compute.UpdateNamedSetRouterRequest(), + project="project_value", + region="region_value", + router="router_value", + named_set_resource=compute.NamedSet(description="description_value"), + ) + + +def test_update_named_set_unary_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.update_named_set in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.update_named_set] = ( + mock_rpc + ) + + request = {} + client.update_named_set_unary(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_named_set_unary(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_update_named_set_unary_rest_required_fields( + request_type=compute.UpdateNamedSetRouterRequest, +): + transport_class = transports.RoutersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["router"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_named_set._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_named_set._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" + + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.update_named_set_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_update_named_set_unary_rest_unset_required_fields(): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.update_named_set._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "namedSetResource", + "project", + "region", + "router", + ) + ) + ) + + +def test_update_named_set_unary_rest_flattened(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + router="router_value", + named_set_resource=compute.NamedSet(description="description_value"), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.update_named_set_unary(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/updateNamedSet" + % client.transport._host, + args[1], + ) + + +def test_update_named_set_unary_rest_flattened_error(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.update_named_set_unary( + compute.UpdateNamedSetRouterRequest(), + project="project_value", + region="region_value", + router="router_value", + named_set_resource=compute.NamedSet(description="description_value"), + ) + + +def test_update_route_policy_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._transport.update_route_policy in client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.update_route_policy] = ( + mock_rpc + ) + + request = {} + client.update_route_policy(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_route_policy(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_update_route_policy_rest_required_fields( + request_type=compute.UpdateRoutePolicyRouterRequest, +): + transport_class = transports.RoutersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["router"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_route_policy._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_route_policy._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" + + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.update_route_policy(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_update_route_policy_rest_unset_required_fields(): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.update_route_policy._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "project", + "region", + "routePolicyResource", + "router", + ) + ) + ) + + +def test_update_route_policy_rest_flattened(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + router="router_value", + route_policy_resource=compute.RoutePolicy(description="description_value"), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.update_route_policy(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/updateRoutePolicy" + % client.transport._host, + args[1], + ) + + +def test_update_route_policy_rest_flattened_error(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.update_route_policy( + compute.UpdateRoutePolicyRouterRequest(), + project="project_value", + region="region_value", + router="router_value", + route_policy_resource=compute.RoutePolicy(description="description_value"), + ) + + +def test_update_route_policy_unary_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._transport.update_route_policy in client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.update_route_policy] = ( + mock_rpc + ) + + request = {} + client.update_route_policy_unary(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.update_route_policy_unary(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_update_route_policy_unary_rest_required_fields( + request_type=compute.UpdateRoutePolicyRouterRequest, +): + transport_class = transports.RoutersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["router"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_route_policy._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["router"] = "router_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).update_route_policy._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + assert "router" in jsonified_request + assert jsonified_request["router"] == "router_value" + + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.update_route_policy_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_update_route_policy_unary_rest_unset_required_fields(): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.update_route_policy._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "project", + "region", + "routePolicyResource", + "router", + ) + ) + ) + + +def test_update_route_policy_unary_rest_flattened(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "router": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + router="router_value", + route_policy_resource=compute.RoutePolicy(description="description_value"), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.update_route_policy_unary(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/regions/{region}/routers/{router}/updateRoutePolicy" + % client.transport._host, + args[1], + ) + + +def test_update_route_policy_unary_rest_flattened_error(transport: str = "rest"): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.update_route_policy_unary( + compute.UpdateRoutePolicyRouterRequest(), + project="project_value", + region="region_value", + router="router_value", + route_policy_resource=compute.RoutePolicy(description="description_value"), + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = RoutersClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = RoutersClient( + client_options=options, + transport=transport, + ) + + # It is an error to provide an api_key and a credential. + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = RoutersClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = RoutersClient( client_options={"scopes": ["1", "2"]}, transport=transport, ) @@ -6963,10 +8752,173 @@ def test_aggregated_list_rest_interceptors(null_interceptor): ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.RouterAggregatedList() - post_with_metadata.return_value = compute.RouterAggregatedList(), metadata + post.return_value = compute.RouterAggregatedList() + post_with_metadata.return_value = compute.RouterAggregatedList(), metadata + + client.aggregated_list( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_delete_rest_bad_request(request_type=compute.DeleteRouterRequest): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.delete(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.DeleteRouterRequest, + dict, + ], +) +def test_delete_rest_call_success(request_type): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation( + client_operation_id="client_operation_id_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + end_time="end_time_value", + http_error_message="http_error_message_value", + http_error_status_code=2374, + id=205, + insert_time="insert_time_value", + kind="kind_value", + name="name_value", + operation_group_id="operation_group_id_value", + operation_type="operation_type_value", + progress=885, + region="region_value", + self_link="self_link_value", + start_time="start_time_value", + status=compute.Operation.Status.DONE, + status_message="status_message_value", + target_id=947, + target_link="target_link_value", + user="user_value", + zone="zone_value", + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.delete(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, extended_operation.ExtendedOperation) + assert response.client_operation_id == "client_operation_id_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.end_time == "end_time_value" + assert response.http_error_message == "http_error_message_value" + assert response.http_error_status_code == 2374 + assert response.id == 205 + assert response.insert_time == "insert_time_value" + assert response.kind == "kind_value" + assert response.name == "name_value" + assert response.operation_group_id == "operation_group_id_value" + assert response.operation_type == "operation_type_value" + assert response.progress == 885 + assert response.region == "region_value" + assert response.self_link == "self_link_value" + assert response.start_time == "start_time_value" + assert response.status == compute.Operation.Status.DONE + assert response.status_message == "status_message_value" + assert response.target_id == 947 + assert response.target_link == "target_link_value" + assert response.user == "user_value" + assert response.zone == "zone_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_delete_rest_interceptors(null_interceptor): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), + ) + client = RoutersClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.RoutersRestInterceptor, "post_delete" + ) as post, mock.patch.object( + transports.RoutersRestInterceptor, "post_delete_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.RoutersRestInterceptor, "pre_delete" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.DeleteRouterRequest.pb(compute.DeleteRouterRequest()) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.Operation.to_json(compute.Operation()) + req.return_value.content = return_value + + request = compute.DeleteRouterRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata - client.aggregated_list( + client.delete( request, metadata=[ ("key", "val"), @@ -6979,7 +8931,9 @@ def test_aggregated_list_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_delete_rest_bad_request(request_type=compute.DeleteRouterRequest): +def test_delete_named_set_rest_bad_request( + request_type=compute.DeleteNamedSetRouterRequest, +): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -6999,17 +8953,17 @@ def test_delete_rest_bad_request(request_type=compute.DeleteRouterRequest): response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.delete(request) + client.delete_named_set(request) @pytest.mark.parametrize( "request_type", [ - compute.DeleteRouterRequest, + compute.DeleteNamedSetRouterRequest, dict, ], ) -def test_delete_rest_call_success(request_type): +def test_delete_named_set_rest_call_success(request_type): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -7056,7 +9010,7 @@ def test_delete_rest_call_success(request_type): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.delete(request) + response = client.delete_named_set(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -7085,7 +9039,7 @@ def test_delete_rest_call_success(request_type): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_delete_rest_interceptors(null_interceptor): +def test_delete_named_set_rest_interceptors(null_interceptor): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), @@ -7097,16 +9051,18 @@ def test_delete_rest_interceptors(null_interceptor): ) as req, mock.patch.object( path_template, "transcode" ) as transcode, mock.patch.object( - transports.RoutersRestInterceptor, "post_delete" + transports.RoutersRestInterceptor, "post_delete_named_set" ) as post, mock.patch.object( - transports.RoutersRestInterceptor, "post_delete_with_metadata" + transports.RoutersRestInterceptor, "post_delete_named_set_with_metadata" ) as post_with_metadata, mock.patch.object( - transports.RoutersRestInterceptor, "pre_delete" + transports.RoutersRestInterceptor, "pre_delete_named_set" ) as pre: pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.DeleteRouterRequest.pb(compute.DeleteRouterRequest()) + pb_message = compute.DeleteNamedSetRouterRequest.pb( + compute.DeleteNamedSetRouterRequest() + ) transcode.return_value = { "method": "post", "uri": "my_uri", @@ -7120,7 +9076,7 @@ def test_delete_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.DeleteRouterRequest() + request = compute.DeleteNamedSetRouterRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -7129,7 +9085,7 @@ def test_delete_rest_interceptors(null_interceptor): post.return_value = compute.Operation() post_with_metadata.return_value = compute.Operation(), metadata - client.delete( + client.delete_named_set( request, metadata=[ ("key", "val"), @@ -7448,6 +9404,131 @@ def test_get_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() +def test_get_named_set_rest_bad_request(request_type=compute.GetNamedSetRouterRequest): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.get_named_set(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.GetNamedSetRouterRequest, + dict, + ], +) +def test_get_named_set_rest_call_success(request_type): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.RoutersGetNamedSetResponse( + etag="etag_value", + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.RoutersGetNamedSetResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.get_named_set(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, compute.RoutersGetNamedSetResponse) + assert response.etag == "etag_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_named_set_rest_interceptors(null_interceptor): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), + ) + client = RoutersClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.RoutersRestInterceptor, "post_get_named_set" + ) as post, mock.patch.object( + transports.RoutersRestInterceptor, "post_get_named_set_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.RoutersRestInterceptor, "pre_get_named_set" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetNamedSetRouterRequest.pb( + compute.GetNamedSetRouterRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.RoutersGetNamedSetResponse.to_json( + compute.RoutersGetNamedSetResponse() + ) + req.return_value.content = return_value + + request = compute.GetNamedSetRouterRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.RoutersGetNamedSetResponse() + post_with_metadata.return_value = compute.RoutersGetNamedSetResponse(), metadata + + client.get_named_set( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + def test_get_nat_ip_info_rest_bad_request( request_type=compute.GetNatIpInfoRouterRequest, ): @@ -8384,18 +10465,151 @@ def test_list_rest_call_success(request_type): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.list(request) + response = client.list(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListPager) + assert response.id == "id_value" + assert response.kind == "kind_value" + assert response.next_page_token == "next_page_token_value" + assert response.self_link == "self_link_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_list_rest_interceptors(null_interceptor): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), + ) + client = RoutersClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.RoutersRestInterceptor, "post_list" + ) as post, mock.patch.object( + transports.RoutersRestInterceptor, "post_list_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.RoutersRestInterceptor, "pre_list" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListRoutersRequest.pb(compute.ListRoutersRequest()) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.RouterList.to_json(compute.RouterList()) + req.return_value.content = return_value + + request = compute.ListRoutersRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.RouterList() + post_with_metadata.return_value = compute.RouterList(), metadata + + client.list( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_list_bgp_routes_rest_bad_request( + request_type=compute.ListBgpRoutesRoutersRequest, +): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.list_bgp_routes(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.ListBgpRoutesRoutersRequest, + dict, + ], +) +def test_list_bgp_routes_rest_call_success(request_type): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.RoutersListBgpRoutes( + etag="etag_value", + id="id_value", + kind="kind_value", + next_page_token="next_page_token_value", + self_link="self_link_value", + unreachables=["unreachables_value"], + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.RoutersListBgpRoutes.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.list_bgp_routes(request) # Establish that the response is the type that we expect. - assert isinstance(response, pagers.ListPager) + assert isinstance(response, pagers.ListBgpRoutesPager) + assert response.etag == "etag_value" assert response.id == "id_value" assert response.kind == "kind_value" assert response.next_page_token == "next_page_token_value" assert response.self_link == "self_link_value" + assert response.unreachables == ["unreachables_value"] @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_list_rest_interceptors(null_interceptor): +def test_list_bgp_routes_rest_interceptors(null_interceptor): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), @@ -8407,16 +10621,18 @@ def test_list_rest_interceptors(null_interceptor): ) as req, mock.patch.object( path_template, "transcode" ) as transcode, mock.patch.object( - transports.RoutersRestInterceptor, "post_list" + transports.RoutersRestInterceptor, "post_list_bgp_routes" ) as post, mock.patch.object( - transports.RoutersRestInterceptor, "post_list_with_metadata" + transports.RoutersRestInterceptor, "post_list_bgp_routes_with_metadata" ) as post_with_metadata, mock.patch.object( - transports.RoutersRestInterceptor, "pre_list" + transports.RoutersRestInterceptor, "pre_list_bgp_routes" ) as pre: pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.ListRoutersRequest.pb(compute.ListRoutersRequest()) + pb_message = compute.ListBgpRoutesRoutersRequest.pb( + compute.ListBgpRoutesRoutersRequest() + ) transcode.return_value = { "method": "post", "uri": "my_uri", @@ -8427,19 +10643,21 @@ def test_list_rest_interceptors(null_interceptor): req.return_value = mock.Mock() req.return_value.status_code = 200 req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - return_value = compute.RouterList.to_json(compute.RouterList()) + return_value = compute.RoutersListBgpRoutes.to_json( + compute.RoutersListBgpRoutes() + ) req.return_value.content = return_value - request = compute.ListRoutersRequest() + request = compute.ListBgpRoutesRoutersRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.RouterList() - post_with_metadata.return_value = compute.RouterList(), metadata + post.return_value = compute.RoutersListBgpRoutes() + post_with_metadata.return_value = compute.RoutersListBgpRoutes(), metadata - client.list( + client.list_bgp_routes( request, metadata=[ ("key", "val"), @@ -8452,8 +10670,8 @@ def test_list_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_list_bgp_routes_rest_bad_request( - request_type=compute.ListBgpRoutesRoutersRequest, +def test_list_named_sets_rest_bad_request( + request_type=compute.ListNamedSetsRoutersRequest, ): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -8474,17 +10692,17 @@ def test_list_bgp_routes_rest_bad_request( response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.list_bgp_routes(request) + client.list_named_sets(request) @pytest.mark.parametrize( "request_type", [ - compute.ListBgpRoutesRoutersRequest, + compute.ListNamedSetsRoutersRequest, dict, ], ) -def test_list_bgp_routes_rest_call_success(request_type): +def test_list_named_sets_rest_call_success(request_type): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -8496,7 +10714,7 @@ def test_list_bgp_routes_rest_call_success(request_type): # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.RoutersListBgpRoutes( + return_value = compute.RoutersListNamedSets( etag="etag_value", id="id_value", kind="kind_value", @@ -8510,15 +10728,15 @@ def test_list_bgp_routes_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.RoutersListBgpRoutes.pb(return_value) + return_value = compute.RoutersListNamedSets.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.list_bgp_routes(request) + response = client.list_named_sets(request) # Establish that the response is the type that we expect. - assert isinstance(response, pagers.ListBgpRoutesPager) + assert isinstance(response, pagers.ListNamedSetsPager) assert response.etag == "etag_value" assert response.id == "id_value" assert response.kind == "kind_value" @@ -8528,7 +10746,7 @@ def test_list_bgp_routes_rest_call_success(request_type): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_list_bgp_routes_rest_interceptors(null_interceptor): +def test_list_named_sets_rest_interceptors(null_interceptor): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), @@ -8540,17 +10758,17 @@ def test_list_bgp_routes_rest_interceptors(null_interceptor): ) as req, mock.patch.object( path_template, "transcode" ) as transcode, mock.patch.object( - transports.RoutersRestInterceptor, "post_list_bgp_routes" + transports.RoutersRestInterceptor, "post_list_named_sets" ) as post, mock.patch.object( - transports.RoutersRestInterceptor, "post_list_bgp_routes_with_metadata" + transports.RoutersRestInterceptor, "post_list_named_sets_with_metadata" ) as post_with_metadata, mock.patch.object( - transports.RoutersRestInterceptor, "pre_list_bgp_routes" + transports.RoutersRestInterceptor, "pre_list_named_sets" ) as pre: pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.ListBgpRoutesRoutersRequest.pb( - compute.ListBgpRoutesRoutersRequest() + pb_message = compute.ListNamedSetsRoutersRequest.pb( + compute.ListNamedSetsRoutersRequest() ) transcode.return_value = { "method": "post", @@ -8562,21 +10780,21 @@ def test_list_bgp_routes_rest_interceptors(null_interceptor): req.return_value = mock.Mock() req.return_value.status_code = 200 req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - return_value = compute.RoutersListBgpRoutes.to_json( - compute.RoutersListBgpRoutes() + return_value = compute.RoutersListNamedSets.to_json( + compute.RoutersListNamedSets() ) req.return_value.content = return_value - request = compute.ListBgpRoutesRoutersRequest() + request = compute.ListNamedSetsRoutersRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.RoutersListBgpRoutes() - post_with_metadata.return_value = compute.RoutersListBgpRoutes(), metadata + post.return_value = compute.RoutersListNamedSets() + post_with_metadata.return_value = compute.RoutersListNamedSets(), metadata - client.list_bgp_routes( + client.list_named_sets( request, metadata=[ ("key", "val"), @@ -8895,18 +11113,264 @@ def test_patch_rest_call_success(request_type): "udp_idle_timeout_sec": 2118, } ], - "ncc_gateway": "ncc_gateway_value", - "network": "network_value", - "params": {"resource_manager_tags": {}}, - "region": "region_value", - "self_link": "self_link_value", + "ncc_gateway": "ncc_gateway_value", + "network": "network_value", + "params": {"resource_manager_tags": {}}, + "region": "region_value", + "self_link": "self_link_value", + } + # The version of a generated dependency at test runtime may differ from the version used during generation. + # Delete any fields which are not present in the current runtime dependency + # See https://github.com/googleapis/gapic-generator-python/issues/1748 + + # Determine if the message type is proto-plus or protobuf + test_field = compute.PatchRouterRequest.meta.fields["router_resource"] + + def get_message_fields(field): + # Given a field which is a message (composite type), return a list with + # all the fields of the message. + # If the field is not a composite type, return an empty list. + message_fields = [] + + if hasattr(field, "message") and field.message: + is_field_type_proto_plus_type = not hasattr(field.message, "DESCRIPTOR") + + if is_field_type_proto_plus_type: + message_fields = field.message.meta.fields.values() + # Add `# pragma: NO COVER` because there may not be any `*_pb2` field types + else: # pragma: NO COVER + message_fields = field.message.DESCRIPTOR.fields + return message_fields + + runtime_nested_fields = [ + (field.name, nested_field.name) + for field in get_message_fields(test_field) + for nested_field in get_message_fields(field) + ] + + subfields_not_in_runtime = [] + + # For each item in the sample request, create a list of sub fields which are not present at runtime + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for field, value in request_init["router_resource"].items(): # pragma: NO COVER + result = None + is_repeated = False + # For repeated fields + if isinstance(value, list) and len(value): + is_repeated = True + result = value[0] + # For fields where the type is another message + if isinstance(value, dict): + result = value + + if result and hasattr(result, "keys"): + for subfield in result.keys(): + if (field, subfield) not in runtime_nested_fields: + subfields_not_in_runtime.append( + { + "field": field, + "subfield": subfield, + "is_repeated": is_repeated, + } + ) + + # Remove fields from the sample request which are not present in the runtime version of the dependency + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for subfield_to_delete in subfields_not_in_runtime: # pragma: NO COVER + field = subfield_to_delete.get("field") + field_repeated = subfield_to_delete.get("is_repeated") + subfield = subfield_to_delete.get("subfield") + if subfield: + if field_repeated: + for i in range(0, len(request_init["router_resource"][field])): + del request_init["router_resource"][field][i][subfield] + else: + del request_init["router_resource"][field][subfield] + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation( + client_operation_id="client_operation_id_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + end_time="end_time_value", + http_error_message="http_error_message_value", + http_error_status_code=2374, + id=205, + insert_time="insert_time_value", + kind="kind_value", + name="name_value", + operation_group_id="operation_group_id_value", + operation_type="operation_type_value", + progress=885, + region="region_value", + self_link="self_link_value", + start_time="start_time_value", + status=compute.Operation.Status.DONE, + status_message="status_message_value", + target_id=947, + target_link="target_link_value", + user="user_value", + zone="zone_value", + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.patch(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, extended_operation.ExtendedOperation) + assert response.client_operation_id == "client_operation_id_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.end_time == "end_time_value" + assert response.http_error_message == "http_error_message_value" + assert response.http_error_status_code == 2374 + assert response.id == 205 + assert response.insert_time == "insert_time_value" + assert response.kind == "kind_value" + assert response.name == "name_value" + assert response.operation_group_id == "operation_group_id_value" + assert response.operation_type == "operation_type_value" + assert response.progress == 885 + assert response.region == "region_value" + assert response.self_link == "self_link_value" + assert response.start_time == "start_time_value" + assert response.status == compute.Operation.Status.DONE + assert response.status_message == "status_message_value" + assert response.target_id == 947 + assert response.target_link == "target_link_value" + assert response.user == "user_value" + assert response.zone == "zone_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_patch_rest_interceptors(null_interceptor): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), + ) + client = RoutersClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.RoutersRestInterceptor, "post_patch" + ) as post, mock.patch.object( + transports.RoutersRestInterceptor, "post_patch_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.RoutersRestInterceptor, "pre_patch" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.PatchRouterRequest.pb(compute.PatchRouterRequest()) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.Operation.to_json(compute.Operation()) + req.return_value.content = return_value + + request = compute.PatchRouterRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.patch( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_patch_named_set_rest_bad_request( + request_type=compute.PatchNamedSetRouterRequest, +): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.patch_named_set(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.PatchNamedSetRouterRequest, + dict, + ], +) +def test_patch_named_set_rest_call_success(request_type): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} + request_init["named_set_resource"] = { + "description": "description_value", + "elements": [ + { + "description": "description_value", + "expression": "expression_value", + "location": "location_value", + "title": "title_value", + } + ], + "fingerprint": "fingerprint_value", + "name": "name_value", + "type_": "type__value", } # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency # See https://github.com/googleapis/gapic-generator-python/issues/1748 # Determine if the message type is proto-plus or protobuf - test_field = compute.PatchRouterRequest.meta.fields["router_resource"] + test_field = compute.PatchNamedSetRouterRequest.meta.fields["named_set_resource"] def get_message_fields(field): # Given a field which is a message (composite type), return a list with @@ -8934,7 +11398,7 @@ def get_message_fields(field): # For each item in the sample request, create a list of sub fields which are not present at runtime # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime - for field, value in request_init["router_resource"].items(): # pragma: NO COVER + for field, value in request_init["named_set_resource"].items(): # pragma: NO COVER result = None is_repeated = False # For repeated fields @@ -8964,10 +11428,10 @@ def get_message_fields(field): subfield = subfield_to_delete.get("subfield") if subfield: if field_repeated: - for i in range(0, len(request_init["router_resource"][field])): - del request_init["router_resource"][field][i][subfield] + for i in range(0, len(request_init["named_set_resource"][field])): + del request_init["named_set_resource"][field][i][subfield] else: - del request_init["router_resource"][field][subfield] + del request_init["named_set_resource"][field][subfield] request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -9008,7 +11472,7 @@ def get_message_fields(field): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch(request) + response = client.patch_named_set(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -9037,7 +11501,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_patch_rest_interceptors(null_interceptor): +def test_patch_named_set_rest_interceptors(null_interceptor): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), @@ -9049,16 +11513,18 @@ def test_patch_rest_interceptors(null_interceptor): ) as req, mock.patch.object( path_template, "transcode" ) as transcode, mock.patch.object( - transports.RoutersRestInterceptor, "post_patch" + transports.RoutersRestInterceptor, "post_patch_named_set" ) as post, mock.patch.object( - transports.RoutersRestInterceptor, "post_patch_with_metadata" + transports.RoutersRestInterceptor, "post_patch_named_set_with_metadata" ) as post_with_metadata, mock.patch.object( - transports.RoutersRestInterceptor, "pre_patch" + transports.RoutersRestInterceptor, "pre_patch_named_set" ) as pre: pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.PatchRouterRequest.pb(compute.PatchRouterRequest()) + pb_message = compute.PatchNamedSetRouterRequest.pb( + compute.PatchNamedSetRouterRequest() + ) transcode.return_value = { "method": "post", "uri": "my_uri", @@ -9072,7 +11538,7 @@ def test_patch_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.PatchRouterRequest() + request = compute.PatchNamedSetRouterRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -9081,7 +11547,7 @@ def test_patch_rest_interceptors(null_interceptor): post.return_value = compute.Operation() post_with_metadata.return_value = compute.Operation(), metadata - client.patch( + client.patch_named_set( request, metadata=[ ("key", "val"), @@ -9618,7 +12084,210 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_preview_rest_interceptors(null_interceptor): +def test_preview_rest_interceptors(null_interceptor): + transport = transports.RoutersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), + ) + client = RoutersClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.RoutersRestInterceptor, "post_preview" + ) as post, mock.patch.object( + transports.RoutersRestInterceptor, "post_preview_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.RoutersRestInterceptor, "pre_preview" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.PreviewRouterRequest.pb(compute.PreviewRouterRequest()) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.RoutersPreviewResponse.to_json( + compute.RoutersPreviewResponse() + ) + req.return_value.content = return_value + + request = compute.PreviewRouterRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.RoutersPreviewResponse() + post_with_metadata.return_value = compute.RoutersPreviewResponse(), metadata + + client.preview( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_test_iam_permissions_rest_bad_request( + request_type=compute.TestIamPermissionsRouterRequest, +): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.test_iam_permissions(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.TestIamPermissionsRouterRequest, + dict, + ], +) +def test_test_iam_permissions_rest_call_success(request_type): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"} + request_init["test_permissions_request_resource"] = { + "permissions": ["permissions_value1", "permissions_value2"] + } + # The version of a generated dependency at test runtime may differ from the version used during generation. + # Delete any fields which are not present in the current runtime dependency + # See https://github.com/googleapis/gapic-generator-python/issues/1748 + + # Determine if the message type is proto-plus or protobuf + test_field = compute.TestIamPermissionsRouterRequest.meta.fields[ + "test_permissions_request_resource" + ] + + def get_message_fields(field): + # Given a field which is a message (composite type), return a list with + # all the fields of the message. + # If the field is not a composite type, return an empty list. + message_fields = [] + + if hasattr(field, "message") and field.message: + is_field_type_proto_plus_type = not hasattr(field.message, "DESCRIPTOR") + + if is_field_type_proto_plus_type: + message_fields = field.message.meta.fields.values() + # Add `# pragma: NO COVER` because there may not be any `*_pb2` field types + else: # pragma: NO COVER + message_fields = field.message.DESCRIPTOR.fields + return message_fields + + runtime_nested_fields = [ + (field.name, nested_field.name) + for field in get_message_fields(test_field) + for nested_field in get_message_fields(field) + ] + + subfields_not_in_runtime = [] + + # For each item in the sample request, create a list of sub fields which are not present at runtime + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for field, value in request_init[ + "test_permissions_request_resource" + ].items(): # pragma: NO COVER + result = None + is_repeated = False + # For repeated fields + if isinstance(value, list) and len(value): + is_repeated = True + result = value[0] + # For fields where the type is another message + if isinstance(value, dict): + result = value + + if result and hasattr(result, "keys"): + for subfield in result.keys(): + if (field, subfield) not in runtime_nested_fields: + subfields_not_in_runtime.append( + { + "field": field, + "subfield": subfield, + "is_repeated": is_repeated, + } + ) + + # Remove fields from the sample request which are not present in the runtime version of the dependency + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for subfield_to_delete in subfields_not_in_runtime: # pragma: NO COVER + field = subfield_to_delete.get("field") + field_repeated = subfield_to_delete.get("is_repeated") + subfield = subfield_to_delete.get("subfield") + if subfield: + if field_repeated: + for i in range( + 0, len(request_init["test_permissions_request_resource"][field]) + ): + del request_init["test_permissions_request_resource"][field][i][ + subfield + ] + else: + del request_init["test_permissions_request_resource"][field][subfield] + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.TestPermissionsResponse( + permissions=["permissions_value"], + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.TestPermissionsResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.test_iam_permissions(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, compute.TestPermissionsResponse) + assert response.permissions == ["permissions_value"] + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_test_iam_permissions_rest_interceptors(null_interceptor): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), @@ -9630,16 +12299,18 @@ def test_preview_rest_interceptors(null_interceptor): ) as req, mock.patch.object( path_template, "transcode" ) as transcode, mock.patch.object( - transports.RoutersRestInterceptor, "post_preview" + transports.RoutersRestInterceptor, "post_test_iam_permissions" ) as post, mock.patch.object( - transports.RoutersRestInterceptor, "post_preview_with_metadata" + transports.RoutersRestInterceptor, "post_test_iam_permissions_with_metadata" ) as post_with_metadata, mock.patch.object( - transports.RoutersRestInterceptor, "pre_preview" + transports.RoutersRestInterceptor, "pre_test_iam_permissions" ) as pre: pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.PreviewRouterRequest.pb(compute.PreviewRouterRequest()) + pb_message = compute.TestIamPermissionsRouterRequest.pb( + compute.TestIamPermissionsRouterRequest() + ) transcode.return_value = { "method": "post", "uri": "my_uri", @@ -9650,21 +12321,21 @@ def test_preview_rest_interceptors(null_interceptor): req.return_value = mock.Mock() req.return_value.status_code = 200 req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - return_value = compute.RoutersPreviewResponse.to_json( - compute.RoutersPreviewResponse() + return_value = compute.TestPermissionsResponse.to_json( + compute.TestPermissionsResponse() ) req.return_value.content = return_value - request = compute.PreviewRouterRequest() + request = compute.TestIamPermissionsRouterRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.RoutersPreviewResponse() - post_with_metadata.return_value = compute.RoutersPreviewResponse(), metadata + post.return_value = compute.TestPermissionsResponse() + post_with_metadata.return_value = compute.TestPermissionsResponse(), metadata - client.preview( + client.test_iam_permissions( request, metadata=[ ("key", "val"), @@ -9677,14 +12348,12 @@ def test_preview_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_test_iam_permissions_rest_bad_request( - request_type=compute.TestIamPermissionsRouterRequest, -): +def test_update_rest_bad_request(request_type=compute.UpdateRouterRequest): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"} + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -9699,34 +12368,167 @@ def test_test_iam_permissions_rest_bad_request( response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.test_iam_permissions(request) + client.update(request) @pytest.mark.parametrize( "request_type", [ - compute.TestIamPermissionsRouterRequest, + compute.UpdateRouterRequest, dict, ], ) -def test_test_iam_permissions_rest_call_success(request_type): +def test_update_rest_call_success(request_type): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"} - request_init["test_permissions_request_resource"] = { - "permissions": ["permissions_value1", "permissions_value2"] + request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} + request_init["router_resource"] = { + "bgp": { + "advertise_mode": "advertise_mode_value", + "advertised_groups": [ + "advertised_groups_value1", + "advertised_groups_value2", + ], + "advertised_ip_ranges": [ + {"description": "description_value", "range_": "range__value"} + ], + "asn": 322, + "identifier_range": "identifier_range_value", + "keepalive_interval": 1914, + }, + "bgp_peers": [ + { + "advertise_mode": "advertise_mode_value", + "advertised_groups": [ + "advertised_groups_value1", + "advertised_groups_value2", + ], + "advertised_ip_ranges": {}, + "advertised_route_priority": 2714, + "bfd": { + "min_receive_interval": 2122, + "min_transmit_interval": 2265, + "multiplier": 1095, + "session_initialization_mode": "session_initialization_mode_value", + }, + "custom_learned_ip_ranges": [{"range_": "range__value"}], + "custom_learned_route_priority": 3140, + "enable": "enable_value", + "enable_ipv4": True, + "enable_ipv6": True, + "export_policies": ["export_policies_value1", "export_policies_value2"], + "import_policies": ["import_policies_value1", "import_policies_value2"], + "interface_name": "interface_name_value", + "ip_address": "ip_address_value", + "ipv4_nexthop_address": "ipv4_nexthop_address_value", + "ipv6_nexthop_address": "ipv6_nexthop_address_value", + "management_type": "management_type_value", + "md5_authentication_key_name": "md5_authentication_key_name_value", + "name": "name_value", + "peer_asn": 845, + "peer_ip_address": "peer_ip_address_value", + "peer_ipv4_nexthop_address": "peer_ipv4_nexthop_address_value", + "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value", + "router_appliance_instance": "router_appliance_instance_value", + } + ], + "creation_timestamp": "creation_timestamp_value", + "description": "description_value", + "encrypted_interconnect_router": True, + "id": 205, + "interfaces": [ + { + "ip_range": "ip_range_value", + "ip_version": "ip_version_value", + "linked_interconnect_attachment": "linked_interconnect_attachment_value", + "linked_vpn_tunnel": "linked_vpn_tunnel_value", + "management_type": "management_type_value", + "name": "name_value", + "private_ip_address": "private_ip_address_value", + "redundant_interface": "redundant_interface_value", + "subnetwork": "subnetwork_value", + } + ], + "kind": "kind_value", + "md5_authentication_keys": [{"key": "key_value", "name": "name_value"}], + "name": "name_value", + "nats": [ + { + "auto_network_tier": "auto_network_tier_value", + "drain_nat_ips": ["drain_nat_ips_value1", "drain_nat_ips_value2"], + "enable_dynamic_port_allocation": True, + "enable_endpoint_independent_mapping": True, + "endpoint_types": ["endpoint_types_value1", "endpoint_types_value2"], + "icmp_idle_timeout_sec": 2214, + "log_config": {"enable": True, "filter": "filter_value"}, + "max_ports_per_vm": 1733, + "min_ports_per_vm": 1731, + "name": "name_value", + "nat64_subnetworks": [{"name": "name_value"}], + "nat_ip_allocate_option": "nat_ip_allocate_option_value", + "nat_ips": ["nat_ips_value1", "nat_ips_value2"], + "rules": [ + { + "action": { + "source_nat_active_ips": [ + "source_nat_active_ips_value1", + "source_nat_active_ips_value2", + ], + "source_nat_active_ranges": [ + "source_nat_active_ranges_value1", + "source_nat_active_ranges_value2", + ], + "source_nat_drain_ips": [ + "source_nat_drain_ips_value1", + "source_nat_drain_ips_value2", + ], + "source_nat_drain_ranges": [ + "source_nat_drain_ranges_value1", + "source_nat_drain_ranges_value2", + ], + }, + "description": "description_value", + "match": "match_value", + "rule_number": 1184, + } + ], + "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value", + "source_subnetwork_ip_ranges_to_nat64": "source_subnetwork_ip_ranges_to_nat64_value", + "subnetworks": [ + { + "name": "name_value", + "secondary_ip_range_names": [ + "secondary_ip_range_names_value1", + "secondary_ip_range_names_value2", + ], + "source_ip_ranges_to_nat": [ + "source_ip_ranges_to_nat_value1", + "source_ip_ranges_to_nat_value2", + ], + } + ], + "tcp_established_idle_timeout_sec": 3371, + "tcp_time_wait_timeout_sec": 2665, + "tcp_transitory_idle_timeout_sec": 3330, + "type_": "type__value", + "udp_idle_timeout_sec": 2118, + } + ], + "ncc_gateway": "ncc_gateway_value", + "network": "network_value", + "params": {"resource_manager_tags": {}}, + "region": "region_value", + "self_link": "self_link_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency # See https://github.com/googleapis/gapic-generator-python/issues/1748 # Determine if the message type is proto-plus or protobuf - test_field = compute.TestIamPermissionsRouterRequest.meta.fields[ - "test_permissions_request_resource" - ] + test_field = compute.UpdateRouterRequest.meta.fields["router_resource"] def get_message_fields(field): # Given a field which is a message (composite type), return a list with @@ -9754,9 +12556,7 @@ def get_message_fields(field): # For each item in the sample request, create a list of sub fields which are not present at runtime # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime - for field, value in request_init[ - "test_permissions_request_resource" - ].items(): # pragma: NO COVER + for field, value in request_init["router_resource"].items(): # pragma: NO COVER result = None is_repeated = False # For repeated fields @@ -9786,21 +12586,38 @@ def get_message_fields(field): subfield = subfield_to_delete.get("subfield") if subfield: if field_repeated: - for i in range( - 0, len(request_init["test_permissions_request_resource"][field]) - ): - del request_init["test_permissions_request_resource"][field][i][ - subfield - ] + for i in range(0, len(request_init["router_resource"][field])): + del request_init["router_resource"][field][i][subfield] else: - del request_init["test_permissions_request_resource"][field][subfield] + del request_init["router_resource"][field][subfield] request = request_type(**request_init) # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. - return_value = compute.TestPermissionsResponse( - permissions=["permissions_value"], + return_value = compute.Operation( + client_operation_id="client_operation_id_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + end_time="end_time_value", + http_error_message="http_error_message_value", + http_error_status_code=2374, + id=205, + insert_time="insert_time_value", + kind="kind_value", + name="name_value", + operation_group_id="operation_group_id_value", + operation_type="operation_type_value", + progress=885, + region="region_value", + self_link="self_link_value", + start_time="start_time_value", + status=compute.Operation.Status.DONE, + status_message="status_message_value", + target_id=947, + target_link="target_link_value", + user="user_value", + zone="zone_value", ) # Wrap the value into a proper Response obj @@ -9808,20 +12625,41 @@ def get_message_fields(field): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.TestPermissionsResponse.pb(return_value) + return_value = compute.Operation.pb(return_value) json_return_value = json_format.MessageToJson(return_value) response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.test_iam_permissions(request) + response = client.update(request) # Establish that the response is the type that we expect. - assert isinstance(response, compute.TestPermissionsResponse) - assert response.permissions == ["permissions_value"] + assert isinstance(response, extended_operation.ExtendedOperation) + assert response.client_operation_id == "client_operation_id_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.end_time == "end_time_value" + assert response.http_error_message == "http_error_message_value" + assert response.http_error_status_code == 2374 + assert response.id == 205 + assert response.insert_time == "insert_time_value" + assert response.kind == "kind_value" + assert response.name == "name_value" + assert response.operation_group_id == "operation_group_id_value" + assert response.operation_type == "operation_type_value" + assert response.progress == 885 + assert response.region == "region_value" + assert response.self_link == "self_link_value" + assert response.start_time == "start_time_value" + assert response.status == compute.Operation.Status.DONE + assert response.status_message == "status_message_value" + assert response.target_id == 947 + assert response.target_link == "target_link_value" + assert response.user == "user_value" + assert response.zone == "zone_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_test_iam_permissions_rest_interceptors(null_interceptor): +def test_update_rest_interceptors(null_interceptor): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), @@ -9833,18 +12671,16 @@ def test_test_iam_permissions_rest_interceptors(null_interceptor): ) as req, mock.patch.object( path_template, "transcode" ) as transcode, mock.patch.object( - transports.RoutersRestInterceptor, "post_test_iam_permissions" + transports.RoutersRestInterceptor, "post_update" ) as post, mock.patch.object( - transports.RoutersRestInterceptor, "post_test_iam_permissions_with_metadata" + transports.RoutersRestInterceptor, "post_update_with_metadata" ) as post_with_metadata, mock.patch.object( - transports.RoutersRestInterceptor, "pre_test_iam_permissions" + transports.RoutersRestInterceptor, "pre_update" ) as pre: pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.TestIamPermissionsRouterRequest.pb( - compute.TestIamPermissionsRouterRequest() - ) + pb_message = compute.UpdateRouterRequest.pb(compute.UpdateRouterRequest()) transcode.return_value = { "method": "post", "uri": "my_uri", @@ -9855,21 +12691,19 @@ def test_test_iam_permissions_rest_interceptors(null_interceptor): req.return_value = mock.Mock() req.return_value.status_code = 200 req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - return_value = compute.TestPermissionsResponse.to_json( - compute.TestPermissionsResponse() - ) + return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.TestIamPermissionsRouterRequest() + request = compute.UpdateRouterRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.TestPermissionsResponse() - post_with_metadata.return_value = compute.TestPermissionsResponse(), metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata - client.test_iam_permissions( + client.update( request, metadata=[ ("key", "val"), @@ -9882,7 +12716,9 @@ def test_test_iam_permissions_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_update_rest_bad_request(request_type=compute.UpdateRouterRequest): +def test_update_named_set_rest_bad_request( + request_type=compute.UpdateNamedSetRouterRequest, +): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -9902,167 +12738,43 @@ def test_update_rest_bad_request(request_type=compute.UpdateRouterRequest): response_value.request = mock.Mock() req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.update(request) + client.update_named_set(request) @pytest.mark.parametrize( "request_type", [ - compute.UpdateRouterRequest, + compute.UpdateNamedSetRouterRequest, dict, ], ) -def test_update_rest_call_success(request_type): +def test_update_named_set_rest_call_success(request_type): client = RoutersClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding request_init = {"project": "sample1", "region": "sample2", "router": "sample3"} - request_init["router_resource"] = { - "bgp": { - "advertise_mode": "advertise_mode_value", - "advertised_groups": [ - "advertised_groups_value1", - "advertised_groups_value2", - ], - "advertised_ip_ranges": [ - {"description": "description_value", "range_": "range__value"} - ], - "asn": 322, - "identifier_range": "identifier_range_value", - "keepalive_interval": 1914, - }, - "bgp_peers": [ - { - "advertise_mode": "advertise_mode_value", - "advertised_groups": [ - "advertised_groups_value1", - "advertised_groups_value2", - ], - "advertised_ip_ranges": {}, - "advertised_route_priority": 2714, - "bfd": { - "min_receive_interval": 2122, - "min_transmit_interval": 2265, - "multiplier": 1095, - "session_initialization_mode": "session_initialization_mode_value", - }, - "custom_learned_ip_ranges": [{"range_": "range__value"}], - "custom_learned_route_priority": 3140, - "enable": "enable_value", - "enable_ipv4": True, - "enable_ipv6": True, - "export_policies": ["export_policies_value1", "export_policies_value2"], - "import_policies": ["import_policies_value1", "import_policies_value2"], - "interface_name": "interface_name_value", - "ip_address": "ip_address_value", - "ipv4_nexthop_address": "ipv4_nexthop_address_value", - "ipv6_nexthop_address": "ipv6_nexthop_address_value", - "management_type": "management_type_value", - "md5_authentication_key_name": "md5_authentication_key_name_value", - "name": "name_value", - "peer_asn": 845, - "peer_ip_address": "peer_ip_address_value", - "peer_ipv4_nexthop_address": "peer_ipv4_nexthop_address_value", - "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value", - "router_appliance_instance": "router_appliance_instance_value", - } - ], - "creation_timestamp": "creation_timestamp_value", + request_init["named_set_resource"] = { "description": "description_value", - "encrypted_interconnect_router": True, - "id": 205, - "interfaces": [ + "elements": [ { - "ip_range": "ip_range_value", - "ip_version": "ip_version_value", - "linked_interconnect_attachment": "linked_interconnect_attachment_value", - "linked_vpn_tunnel": "linked_vpn_tunnel_value", - "management_type": "management_type_value", - "name": "name_value", - "private_ip_address": "private_ip_address_value", - "redundant_interface": "redundant_interface_value", - "subnetwork": "subnetwork_value", + "description": "description_value", + "expression": "expression_value", + "location": "location_value", + "title": "title_value", } ], - "kind": "kind_value", - "md5_authentication_keys": [{"key": "key_value", "name": "name_value"}], + "fingerprint": "fingerprint_value", "name": "name_value", - "nats": [ - { - "auto_network_tier": "auto_network_tier_value", - "drain_nat_ips": ["drain_nat_ips_value1", "drain_nat_ips_value2"], - "enable_dynamic_port_allocation": True, - "enable_endpoint_independent_mapping": True, - "endpoint_types": ["endpoint_types_value1", "endpoint_types_value2"], - "icmp_idle_timeout_sec": 2214, - "log_config": {"enable": True, "filter": "filter_value"}, - "max_ports_per_vm": 1733, - "min_ports_per_vm": 1731, - "name": "name_value", - "nat64_subnetworks": [{"name": "name_value"}], - "nat_ip_allocate_option": "nat_ip_allocate_option_value", - "nat_ips": ["nat_ips_value1", "nat_ips_value2"], - "rules": [ - { - "action": { - "source_nat_active_ips": [ - "source_nat_active_ips_value1", - "source_nat_active_ips_value2", - ], - "source_nat_active_ranges": [ - "source_nat_active_ranges_value1", - "source_nat_active_ranges_value2", - ], - "source_nat_drain_ips": [ - "source_nat_drain_ips_value1", - "source_nat_drain_ips_value2", - ], - "source_nat_drain_ranges": [ - "source_nat_drain_ranges_value1", - "source_nat_drain_ranges_value2", - ], - }, - "description": "description_value", - "match": "match_value", - "rule_number": 1184, - } - ], - "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value", - "source_subnetwork_ip_ranges_to_nat64": "source_subnetwork_ip_ranges_to_nat64_value", - "subnetworks": [ - { - "name": "name_value", - "secondary_ip_range_names": [ - "secondary_ip_range_names_value1", - "secondary_ip_range_names_value2", - ], - "source_ip_ranges_to_nat": [ - "source_ip_ranges_to_nat_value1", - "source_ip_ranges_to_nat_value2", - ], - } - ], - "tcp_established_idle_timeout_sec": 3371, - "tcp_time_wait_timeout_sec": 2665, - "tcp_transitory_idle_timeout_sec": 3330, - "type_": "type__value", - "udp_idle_timeout_sec": 2118, - } - ], - "ncc_gateway": "ncc_gateway_value", - "network": "network_value", - "params": {"resource_manager_tags": {}}, - "region": "region_value", - "self_link": "self_link_value", + "type_": "type__value", } # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency # See https://github.com/googleapis/gapic-generator-python/issues/1748 # Determine if the message type is proto-plus or protobuf - test_field = compute.UpdateRouterRequest.meta.fields["router_resource"] + test_field = compute.UpdateNamedSetRouterRequest.meta.fields["named_set_resource"] def get_message_fields(field): # Given a field which is a message (composite type), return a list with @@ -10090,7 +12802,7 @@ def get_message_fields(field): # For each item in the sample request, create a list of sub fields which are not present at runtime # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime - for field, value in request_init["router_resource"].items(): # pragma: NO COVER + for field, value in request_init["named_set_resource"].items(): # pragma: NO COVER result = None is_repeated = False # For repeated fields @@ -10120,10 +12832,10 @@ def get_message_fields(field): subfield = subfield_to_delete.get("subfield") if subfield: if field_repeated: - for i in range(0, len(request_init["router_resource"][field])): - del request_init["router_resource"][field][i][subfield] + for i in range(0, len(request_init["named_set_resource"][field])): + del request_init["named_set_resource"][field][i][subfield] else: - del request_init["router_resource"][field][subfield] + del request_init["named_set_resource"][field][subfield] request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -10164,7 +12876,7 @@ def get_message_fields(field): response_value.content = json_return_value.encode("UTF-8") req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.update(request) + response = client.update_named_set(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -10193,7 +12905,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_update_rest_interceptors(null_interceptor): +def test_update_named_set_rest_interceptors(null_interceptor): transport = transports.RoutersRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None if null_interceptor else transports.RoutersRestInterceptor(), @@ -10205,16 +12917,18 @@ def test_update_rest_interceptors(null_interceptor): ) as req, mock.patch.object( path_template, "transcode" ) as transcode, mock.patch.object( - transports.RoutersRestInterceptor, "post_update" + transports.RoutersRestInterceptor, "post_update_named_set" ) as post, mock.patch.object( - transports.RoutersRestInterceptor, "post_update_with_metadata" + transports.RoutersRestInterceptor, "post_update_named_set_with_metadata" ) as post_with_metadata, mock.patch.object( - transports.RoutersRestInterceptor, "pre_update" + transports.RoutersRestInterceptor, "pre_update_named_set" ) as pre: pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.UpdateRouterRequest.pb(compute.UpdateRouterRequest()) + pb_message = compute.UpdateNamedSetRouterRequest.pb( + compute.UpdateNamedSetRouterRequest() + ) transcode.return_value = { "method": "post", "uri": "my_uri", @@ -10228,7 +12942,7 @@ def test_update_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.UpdateRouterRequest() + request = compute.UpdateNamedSetRouterRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -10237,7 +12951,7 @@ def test_update_rest_interceptors(null_interceptor): post.return_value = compute.Operation() post_with_metadata.return_value = compute.Operation(), metadata - client.update( + client.update_named_set( request, metadata=[ ("key", "val"), @@ -10555,6 +13269,26 @@ def test_delete_unary_empty_call_rest(): assert args[0] == request_msg +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_delete_named_set_unary_empty_call_rest(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.delete_named_set), "__call__") as call: + client.delete_named_set_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.DeleteNamedSetRouterRequest() + + assert args[0] == request_msg + + # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. def test_delete_route_policy_unary_empty_call_rest(): @@ -10597,6 +13331,26 @@ def test_get_empty_call_rest(): assert args[0] == request_msg +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_get_named_set_empty_call_rest(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_named_set), "__call__") as call: + client.get_named_set(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.GetNamedSetRouterRequest() + + assert args[0] == request_msg + + # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. def test_get_nat_ip_info_empty_call_rest(): @@ -10741,6 +13495,26 @@ def test_list_bgp_routes_empty_call_rest(): assert args[0] == request_msg +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_list_named_sets_empty_call_rest(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.list_named_sets), "__call__") as call: + client.list_named_sets(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.ListNamedSetsRoutersRequest() + + assert args[0] == request_msg + + # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. def test_list_route_policies_empty_call_rest(): @@ -10783,6 +13557,26 @@ def test_patch_unary_empty_call_rest(): assert args[0] == request_msg +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_patch_named_set_unary_empty_call_rest(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.patch_named_set), "__call__") as call: + client.patch_named_set_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.PatchNamedSetRouterRequest() + + assert args[0] == request_msg + + # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. def test_patch_route_policy_unary_empty_call_rest(): @@ -10867,6 +13661,26 @@ def test_update_unary_empty_call_rest(): assert args[0] == request_msg +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_update_named_set_unary_empty_call_rest(): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.update_named_set), "__call__") as call: + client.update_named_set_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.UpdateNamedSetRouterRequest() + + assert args[0] == request_msg + + # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. def test_update_route_policy_unary_empty_call_rest(): @@ -10913,8 +13727,10 @@ def test_routers_base_transport(): methods = ( "aggregated_list", "delete", + "delete_named_set", "delete_route_policy", "get", + "get_named_set", "get_nat_ip_info", "get_nat_mapping_info", "get_route_policy", @@ -10922,12 +13738,15 @@ def test_routers_base_transport(): "insert", "list", "list_bgp_routes", + "list_named_sets", "list_route_policies", "patch", + "patch_named_set", "patch_route_policy", "preview", "test_iam_permissions", "update", + "update_named_set", "update_route_policy", ) for method in methods: @@ -11072,12 +13891,18 @@ def test_routers_client_transport_session_collision(transport_name): session1 = client1.transport.delete._session session2 = client2.transport.delete._session assert session1 != session2 + session1 = client1.transport.delete_named_set._session + session2 = client2.transport.delete_named_set._session + assert session1 != session2 session1 = client1.transport.delete_route_policy._session session2 = client2.transport.delete_route_policy._session assert session1 != session2 session1 = client1.transport.get._session session2 = client2.transport.get._session assert session1 != session2 + session1 = client1.transport.get_named_set._session + session2 = client2.transport.get_named_set._session + assert session1 != session2 session1 = client1.transport.get_nat_ip_info._session session2 = client2.transport.get_nat_ip_info._session assert session1 != session2 @@ -11099,12 +13924,18 @@ def test_routers_client_transport_session_collision(transport_name): session1 = client1.transport.list_bgp_routes._session session2 = client2.transport.list_bgp_routes._session assert session1 != session2 + session1 = client1.transport.list_named_sets._session + session2 = client2.transport.list_named_sets._session + assert session1 != session2 session1 = client1.transport.list_route_policies._session session2 = client2.transport.list_route_policies._session assert session1 != session2 session1 = client1.transport.patch._session session2 = client2.transport.patch._session assert session1 != session2 + session1 = client1.transport.patch_named_set._session + session2 = client2.transport.patch_named_set._session + assert session1 != session2 session1 = client1.transport.patch_route_policy._session session2 = client2.transport.patch_route_policy._session assert session1 != session2 @@ -11117,6 +13948,9 @@ def test_routers_client_transport_session_collision(transport_name): session1 = client1.transport.update._session session2 = client2.transport.update._session assert session1 != session2 + session1 = client1.transport.update_named_set._session + session2 = client2.transport.update_named_set._session + assert session1 != session2 session1 = client1.transport.update_route_policy._session session2 = client2.transport.update_route_policy._session assert session1 != session2 diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_snapshot_groups.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_snapshot_groups.py new file mode 100644 index 000000000000..ba779a0f747c --- /dev/null +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_snapshot_groups.py @@ -0,0 +1,4875 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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. +# +import os + +# try/except added for compatibility with python < 3.8 +try: + from unittest import mock + from unittest.mock import AsyncMock # pragma: NO COVER +except ImportError: # pragma: NO COVER + import mock + +import json +import math +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence + +import grpc +import pytest +from google.api_core import api_core_version +from google.protobuf import json_format +from grpc.experimental import aio +from proto.marshal.rules import wrappers +from proto.marshal.rules.dates import DurationRule, TimestampRule +from requests import PreparedRequest, Request, Response +from requests.sessions import Session + +try: + from google.auth.aio import credentials as ga_credentials_async + + HAS_GOOGLE_AUTH_AIO = True +except ImportError: # pragma: NO COVER + HAS_GOOGLE_AUTH_AIO = False + +import google.api_core.extended_operation as extended_operation # type: ignore +import google.auth +from google.api_core import ( + client_options, + future, + gapic_v1, + grpc_helpers, + grpc_helpers_async, + path_template, +) +from google.api_core import exceptions as core_exceptions +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials +from google.auth.exceptions import MutualTLSChannelError +from google.oauth2 import service_account + +from google.cloud.compute_v1beta.services.snapshot_groups import ( + SnapshotGroupsClient, + pagers, + transports, +) +from google.cloud.compute_v1beta.types import compute + +CRED_INFO_JSON = { + "credential_source": "/path/to/file", + "credential_type": "service account credentials", + "principal": "service-account@example.com", +} +CRED_INFO_STRING = json.dumps(CRED_INFO_JSON) + + +async def mock_async_gen(data, chunk_size=1): + for i in range(0, len(data)): # pragma: NO COVER + chunk = data[i : i + chunk_size] + yield chunk.encode("utf-8") + + +def client_cert_source_callback(): + return b"cert bytes", b"key bytes" + + +# TODO: use async auth anon credentials by default once the minimum version of google-auth is upgraded. +# See related issue: https://github.com/googleapis/gapic-generator-python/issues/2107. +def async_anonymous_credentials(): + if HAS_GOOGLE_AUTH_AIO: + return ga_credentials_async.AnonymousCredentials() + return ga_credentials.AnonymousCredentials() + + +# If default endpoint is localhost, then default mtls endpoint will be the same. +# This method modifies the default endpoint so the client can produce a different +# mtls endpoint for endpoint testing purposes. +def modify_default_endpoint(client): + return ( + "foo.googleapis.com" + if ("localhost" in client.DEFAULT_ENDPOINT) + else client.DEFAULT_ENDPOINT + ) + + +# If default endpoint template is localhost, then default mtls endpoint will be the same. +# This method modifies the default endpoint template so the client can produce a different +# mtls endpoint for endpoint testing purposes. +def modify_default_endpoint_template(client): + return ( + "test.{UNIVERSE_DOMAIN}" + if ("localhost" in client._DEFAULT_ENDPOINT_TEMPLATE) + else client._DEFAULT_ENDPOINT_TEMPLATE + ) + + +def test__get_default_mtls_endpoint(): + api_endpoint = "example.googleapis.com" + api_mtls_endpoint = "example.mtls.googleapis.com" + sandbox_endpoint = "example.sandbox.googleapis.com" + sandbox_mtls_endpoint = "example.mtls.sandbox.googleapis.com" + non_googleapi = "api.example.com" + + assert SnapshotGroupsClient._get_default_mtls_endpoint(None) is None + assert ( + SnapshotGroupsClient._get_default_mtls_endpoint(api_endpoint) + == api_mtls_endpoint + ) + assert ( + SnapshotGroupsClient._get_default_mtls_endpoint(api_mtls_endpoint) + == api_mtls_endpoint + ) + assert ( + SnapshotGroupsClient._get_default_mtls_endpoint(sandbox_endpoint) + == sandbox_mtls_endpoint + ) + assert ( + SnapshotGroupsClient._get_default_mtls_endpoint(sandbox_mtls_endpoint) + == sandbox_mtls_endpoint + ) + assert ( + SnapshotGroupsClient._get_default_mtls_endpoint(non_googleapi) == non_googleapi + ) + + +def test__read_environment_variables(): + assert SnapshotGroupsClient._read_environment_variables() == (False, "auto", None) + + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + assert SnapshotGroupsClient._read_environment_variables() == ( + True, + "auto", + None, + ) + + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "false"}): + assert SnapshotGroupsClient._read_environment_variables() == ( + False, + "auto", + None, + ) + + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "Unsupported"} + ): + if not hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with pytest.raises(ValueError) as excinfo: + SnapshotGroupsClient._read_environment_variables() + assert ( + str(excinfo.value) + == "Environment variable `GOOGLE_API_USE_CLIENT_CERTIFICATE` must be either `true` or `false`" + ) + else: + assert SnapshotGroupsClient._read_environment_variables() == ( + False, + "auto", + None, + ) + + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): + assert SnapshotGroupsClient._read_environment_variables() == ( + False, + "never", + None, + ) + + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): + assert SnapshotGroupsClient._read_environment_variables() == ( + False, + "always", + None, + ) + + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}): + assert SnapshotGroupsClient._read_environment_variables() == ( + False, + "auto", + None, + ) + + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "Unsupported"}): + with pytest.raises(MutualTLSChannelError) as excinfo: + SnapshotGroupsClient._read_environment_variables() + assert ( + str(excinfo.value) + == "Environment variable `GOOGLE_API_USE_MTLS_ENDPOINT` must be `never`, `auto` or `always`" + ) + + with mock.patch.dict(os.environ, {"GOOGLE_CLOUD_UNIVERSE_DOMAIN": "foo.com"}): + assert SnapshotGroupsClient._read_environment_variables() == ( + False, + "auto", + "foo.com", + ) + + +def test_use_client_cert_effective(): + # Test case 1: Test when `should_use_client_cert` returns True. + # We mock the `should_use_client_cert` function to simulate a scenario where + # the google-auth library supports automatic mTLS and determines that a + # client certificate should be used. + if hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch( + "google.auth.transport.mtls.should_use_client_cert", return_value=True + ): + assert SnapshotGroupsClient._use_client_cert_effective() is True + + # Test case 2: Test when `should_use_client_cert` returns False. + # We mock the `should_use_client_cert` function to simulate a scenario where + # the google-auth library supports automatic mTLS and determines that a + # client certificate should NOT be used. + if hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch( + "google.auth.transport.mtls.should_use_client_cert", return_value=False + ): + assert SnapshotGroupsClient._use_client_cert_effective() is False + + # Test case 3: Test when `should_use_client_cert` is unavailable and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is set to "true". + if not hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + assert SnapshotGroupsClient._use_client_cert_effective() is True + + # Test case 4: Test when `should_use_client_cert` is unavailable and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is set to "false". + if not hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "false"} + ): + assert SnapshotGroupsClient._use_client_cert_effective() is False + + # Test case 5: Test when `should_use_client_cert` is unavailable and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is set to "True". + if not hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "True"}): + assert SnapshotGroupsClient._use_client_cert_effective() is True + + # Test case 6: Test when `should_use_client_cert` is unavailable and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is set to "False". + if not hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "False"} + ): + assert SnapshotGroupsClient._use_client_cert_effective() is False + + # Test case 7: Test when `should_use_client_cert` is unavailable and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is set to "TRUE". + if not hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "TRUE"}): + assert SnapshotGroupsClient._use_client_cert_effective() is True + + # Test case 8: Test when `should_use_client_cert` is unavailable and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is set to "FALSE". + if not hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "FALSE"} + ): + assert SnapshotGroupsClient._use_client_cert_effective() is False + + # Test case 9: Test when `should_use_client_cert` is unavailable and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is not set. + # In this case, the method should return False, which is the default value. + if not hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict(os.environ, clear=True): + assert SnapshotGroupsClient._use_client_cert_effective() is False + + # Test case 10: Test when `should_use_client_cert` is unavailable and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is set to an invalid value. + # The method should raise a ValueError as the environment variable must be either + # "true" or "false". + if not hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "unsupported"} + ): + with pytest.raises(ValueError): + SnapshotGroupsClient._use_client_cert_effective() + + # Test case 11: Test when `should_use_client_cert` is available and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is set to an invalid value. + # The method should return False as the environment variable is set to an invalid value. + if hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "unsupported"} + ): + assert SnapshotGroupsClient._use_client_cert_effective() is False + + # Test case 12: Test when `should_use_client_cert` is available and the + # `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is unset. Also, + # the GOOGLE_API_CONFIG environment variable is unset. + if hasattr(google.auth.transport.mtls, "should_use_client_cert"): + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": ""}): + with mock.patch.dict(os.environ, {"GOOGLE_API_CERTIFICATE_CONFIG": ""}): + assert SnapshotGroupsClient._use_client_cert_effective() is False + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert SnapshotGroupsClient._get_client_cert_source(None, False) is None + assert ( + SnapshotGroupsClient._get_client_cert_source(mock_provided_cert_source, False) + is None + ) + assert ( + SnapshotGroupsClient._get_client_cert_source(mock_provided_cert_source, True) + == mock_provided_cert_source + ) + + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", return_value=True + ): + with mock.patch( + "google.auth.transport.mtls.default_client_cert_source", + return_value=mock_default_cert_source, + ): + assert ( + SnapshotGroupsClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + SnapshotGroupsClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@mock.patch.object( + SnapshotGroupsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(SnapshotGroupsClient), +) +def test__get_api_endpoint(): + api_override = "foo.com" + mock_client_cert_source = mock.Mock() + default_universe = SnapshotGroupsClient._DEFAULT_UNIVERSE + default_endpoint = SnapshotGroupsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + mock_universe = "bar.com" + mock_endpoint = SnapshotGroupsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=mock_universe + ) + + assert ( + SnapshotGroupsClient._get_api_endpoint( + api_override, mock_client_cert_source, default_universe, "always" + ) + == api_override + ) + assert ( + SnapshotGroupsClient._get_api_endpoint( + None, mock_client_cert_source, default_universe, "auto" + ) + == SnapshotGroupsClient.DEFAULT_MTLS_ENDPOINT + ) + assert ( + SnapshotGroupsClient._get_api_endpoint(None, None, default_universe, "auto") + == default_endpoint + ) + assert ( + SnapshotGroupsClient._get_api_endpoint(None, None, default_universe, "always") + == SnapshotGroupsClient.DEFAULT_MTLS_ENDPOINT + ) + assert ( + SnapshotGroupsClient._get_api_endpoint( + None, mock_client_cert_source, default_universe, "always" + ) + == SnapshotGroupsClient.DEFAULT_MTLS_ENDPOINT + ) + assert ( + SnapshotGroupsClient._get_api_endpoint(None, None, mock_universe, "never") + == mock_endpoint + ) + assert ( + SnapshotGroupsClient._get_api_endpoint(None, None, default_universe, "never") + == default_endpoint + ) + + with pytest.raises(MutualTLSChannelError) as excinfo: + SnapshotGroupsClient._get_api_endpoint( + None, mock_client_cert_source, mock_universe, "auto" + ) + assert ( + str(excinfo.value) + == "mTLS is not supported in any universe other than googleapis.com." + ) + + +def test__get_universe_domain(): + client_universe_domain = "foo.com" + universe_domain_env = "bar.com" + + assert ( + SnapshotGroupsClient._get_universe_domain( + client_universe_domain, universe_domain_env + ) + == client_universe_domain + ) + assert ( + SnapshotGroupsClient._get_universe_domain(None, universe_domain_env) + == universe_domain_env + ) + assert ( + SnapshotGroupsClient._get_universe_domain(None, None) + == SnapshotGroupsClient._DEFAULT_UNIVERSE + ) + + with pytest.raises(ValueError) as excinfo: + SnapshotGroupsClient._get_universe_domain("", None) + assert str(excinfo.value) == "Universe Domain cannot be an empty string." + + +@pytest.mark.parametrize( + "error_code,cred_info_json,show_cred_info", + [ + (401, CRED_INFO_JSON, True), + (403, CRED_INFO_JSON, True), + (404, CRED_INFO_JSON, True), + (500, CRED_INFO_JSON, False), + (401, None, False), + (403, None, False), + (404, None, False), + (500, None, False), + ], +) +def test__add_cred_info_for_auth_errors(error_code, cred_info_json, show_cred_info): + cred = mock.Mock(["get_cred_info"]) + cred.get_cred_info = mock.Mock(return_value=cred_info_json) + client = SnapshotGroupsClient(credentials=cred) + client._transport._credentials = cred + + error = core_exceptions.GoogleAPICallError("message", details=["foo"]) + error.code = error_code + + client._add_cred_info_for_auth_errors(error) + if show_cred_info: + assert error.details == ["foo", CRED_INFO_STRING] + else: + assert error.details == ["foo"] + + +@pytest.mark.parametrize("error_code", [401, 403, 404, 500]) +def test__add_cred_info_for_auth_errors_no_get_cred_info(error_code): + cred = mock.Mock([]) + assert not hasattr(cred, "get_cred_info") + client = SnapshotGroupsClient(credentials=cred) + client._transport._credentials = cred + + error = core_exceptions.GoogleAPICallError("message", details=[]) + error.code = error_code + + client._add_cred_info_for_auth_errors(error) + assert error.details == [] + + +@pytest.mark.parametrize( + "client_class,transport_name", + [ + (SnapshotGroupsClient, "rest"), + ], +) +def test_snapshot_groups_client_from_service_account_info(client_class, transport_name): + creds = ga_credentials.AnonymousCredentials() + with mock.patch.object( + service_account.Credentials, "from_service_account_info" + ) as factory: + factory.return_value = creds + info = {"valid": True} + client = client_class.from_service_account_info(info, transport=transport_name) + assert client.transport._credentials == creds + assert isinstance(client, client_class) + + assert client.transport._host == ( + "compute.googleapis.com:443" + if transport_name in ["grpc", "grpc_asyncio"] + else "https://compute.googleapis.com" + ) + + +@pytest.mark.parametrize( + "transport_class,transport_name", + [ + (transports.SnapshotGroupsRestTransport, "rest"), + ], +) +def test_snapshot_groups_client_service_account_always_use_jwt( + transport_class, transport_name +): + with mock.patch.object( + service_account.Credentials, "with_always_use_jwt_access", create=True + ) as use_jwt: + creds = service_account.Credentials(None, None, None) + transport = transport_class(credentials=creds, always_use_jwt_access=True) + use_jwt.assert_called_once_with(True) + + with mock.patch.object( + service_account.Credentials, "with_always_use_jwt_access", create=True + ) as use_jwt: + creds = service_account.Credentials(None, None, None) + transport = transport_class(credentials=creds, always_use_jwt_access=False) + use_jwt.assert_not_called() + + +@pytest.mark.parametrize( + "client_class,transport_name", + [ + (SnapshotGroupsClient, "rest"), + ], +) +def test_snapshot_groups_client_from_service_account_file(client_class, transport_name): + creds = ga_credentials.AnonymousCredentials() + with mock.patch.object( + service_account.Credentials, "from_service_account_file" + ) as factory: + factory.return_value = creds + client = client_class.from_service_account_file( + "dummy/file/path.json", transport=transport_name + ) + assert client.transport._credentials == creds + assert isinstance(client, client_class) + + client = client_class.from_service_account_json( + "dummy/file/path.json", transport=transport_name + ) + assert client.transport._credentials == creds + assert isinstance(client, client_class) + + assert client.transport._host == ( + "compute.googleapis.com:443" + if transport_name in ["grpc", "grpc_asyncio"] + else "https://compute.googleapis.com" + ) + + +def test_snapshot_groups_client_get_transport_class(): + transport = SnapshotGroupsClient.get_transport_class() + available_transports = [ + transports.SnapshotGroupsRestTransport, + ] + assert transport in available_transports + + transport = SnapshotGroupsClient.get_transport_class("rest") + assert transport == transports.SnapshotGroupsRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (SnapshotGroupsClient, transports.SnapshotGroupsRestTransport, "rest"), + ], +) +@mock.patch.object( + SnapshotGroupsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(SnapshotGroupsClient), +) +def test_snapshot_groups_client_client_options( + client_class, transport_class, transport_name +): + # Check that if channel is provided we won't create a new one. + with mock.patch.object(SnapshotGroupsClient, "get_transport_class") as gtc: + transport = transport_class(credentials=ga_credentials.AnonymousCredentials()) + client = client_class(transport=transport) + gtc.assert_not_called() + + # Check that if channel is provided via str we will create a new one. + with mock.patch.object(SnapshotGroupsClient, "get_transport_class") as gtc: + client = client_class(transport=transport_name) + gtc.assert_called() + + # Check the case api_endpoint is provided. + options = client_options.ClientOptions(api_endpoint="squid.clam.whelk") + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(transport=transport_name, client_options=options) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host="squid.clam.whelk", + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is + # "never". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=client._DEFAULT_UNIVERSE + ), + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is + # "always". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_MTLS_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT has + # unsupported value. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "Unsupported"}): + with pytest.raises(MutualTLSChannelError) as excinfo: + client = client_class(transport=transport_name) + assert ( + str(excinfo.value) + == "Environment variable `GOOGLE_API_USE_MTLS_ENDPOINT` must be `never`, `auto` or `always`" + ) + + # Check the case quota_project_id is provided + options = client_options.ClientOptions(quota_project_id="octopus") + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=client._DEFAULT_UNIVERSE + ), + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id="octopus", + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) + # Check the case api_endpoint is provided + options = client_options.ClientOptions( + api_audience="https://language.googleapis.com" + ) + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=client._DEFAULT_UNIVERSE + ), + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience="https://language.googleapis.com", + ) + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name,use_client_cert_env", + [ + (SnapshotGroupsClient, transports.SnapshotGroupsRestTransport, "rest", "true"), + (SnapshotGroupsClient, transports.SnapshotGroupsRestTransport, "rest", "false"), + ], +) +@mock.patch.object( + SnapshotGroupsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(SnapshotGroupsClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_snapshot_groups_client_mtls_env_auto( + client_class, transport_class, transport_name, use_client_cert_env +): + # This tests the endpoint autoswitch behavior. Endpoint is autoswitched to the default + # mtls endpoint, if GOOGLE_API_USE_CLIENT_CERTIFICATE is "true" and client cert exists. + + # Check the case client_cert_source is provided. Whether client cert is used depends on + # GOOGLE_API_USE_CLIENT_CERTIFICATE value. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env} + ): + options = client_options.ClientOptions( + client_cert_source=client_cert_source_callback + ) + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + + if use_client_cert_env == "false": + expected_client_cert_source = None + expected_host = client._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=client._DEFAULT_UNIVERSE + ) + else: + expected_client_cert_source = client_cert_source_callback + expected_host = client.DEFAULT_MTLS_ENDPOINT + + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=expected_host, + scopes=None, + client_cert_source_for_mtls=expected_client_cert_source, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) + + # Check the case ADC client cert is provided. Whether client cert is used depends on + # GOOGLE_API_USE_CLIENT_CERTIFICATE value. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env} + ): + with mock.patch.object(transport_class, "__init__") as patched: + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=True, + ): + with mock.patch( + "google.auth.transport.mtls.default_client_cert_source", + return_value=client_cert_source_callback, + ): + if use_client_cert_env == "false": + expected_host = client._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=client._DEFAULT_UNIVERSE + ) + expected_client_cert_source = None + else: + expected_host = client.DEFAULT_MTLS_ENDPOINT + expected_client_cert_source = client_cert_source_callback + + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=expected_host, + scopes=None, + client_cert_source_for_mtls=expected_client_cert_source, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) + + # Check the case client_cert_source and ADC client cert are not provided. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env} + ): + with mock.patch.object(transport_class, "__init__") as patched: + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=False, + ): + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=client._DEFAULT_UNIVERSE + ), + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) + + +@pytest.mark.parametrize("client_class", [SnapshotGroupsClient]) +@mock.patch.object( + SnapshotGroupsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(SnapshotGroupsClient), +) +def test_snapshot_groups_client_get_mtls_endpoint_and_cert_source(client_class): + mock_client_cert_source = mock.Mock() + + # Test the case GOOGLE_API_USE_CLIENT_CERTIFICATE is "true". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + mock_api_endpoint = "foo" + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, api_endpoint=mock_api_endpoint + ) + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source( + options + ) + assert api_endpoint == mock_api_endpoint + assert cert_source == mock_client_cert_source + + # Test the case GOOGLE_API_USE_CLIENT_CERTIFICATE is "false". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "false"}): + mock_client_cert_source = mock.Mock() + mock_api_endpoint = "foo" + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, api_endpoint=mock_api_endpoint + ) + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source( + options + ) + assert api_endpoint == mock_api_endpoint + assert cert_source is None + + # Test the case GOOGLE_API_USE_CLIENT_CERTIFICATE is "Unsupported". + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "Unsupported"} + ): + if hasattr(google.auth.transport.mtls, "should_use_client_cert"): + mock_client_cert_source = mock.Mock() + mock_api_endpoint = "foo" + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, + api_endpoint=mock_api_endpoint, + ) + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source( + options + ) + assert api_endpoint == mock_api_endpoint + assert cert_source is None + + # Test cases for mTLS enablement when GOOGLE_API_USE_CLIENT_CERTIFICATE is unset. + test_cases = [ + ( + # With workloads present in config, mTLS is enabled. + { + "version": 1, + "cert_configs": { + "workload": { + "cert_path": "path/to/cert/file", + "key_path": "path/to/key/file", + } + }, + }, + mock_client_cert_source, + ), + ( + # With workloads not present in config, mTLS is disabled. + { + "version": 1, + "cert_configs": {}, + }, + None, + ), + ] + if hasattr(google.auth.transport.mtls, "should_use_client_cert"): + for config_data, expected_cert_source in test_cases: + env = os.environ.copy() + env.pop("GOOGLE_API_USE_CLIENT_CERTIFICATE", None) + with mock.patch.dict(os.environ, env, clear=True): + config_filename = "mock_certificate_config.json" + config_file_content = json.dumps(config_data) + m = mock.mock_open(read_data=config_file_content) + with mock.patch("builtins.open", m): + with mock.patch.dict( + os.environ, {"GOOGLE_API_CERTIFICATE_CONFIG": config_filename} + ): + mock_api_endpoint = "foo" + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, + api_endpoint=mock_api_endpoint, + ) + api_endpoint, cert_source = ( + client_class.get_mtls_endpoint_and_cert_source(options) + ) + assert api_endpoint == mock_api_endpoint + assert cert_source is expected_cert_source + + # Test cases for mTLS enablement when GOOGLE_API_USE_CLIENT_CERTIFICATE is unset(empty). + test_cases = [ + ( + # With workloads present in config, mTLS is enabled. + { + "version": 1, + "cert_configs": { + "workload": { + "cert_path": "path/to/cert/file", + "key_path": "path/to/key/file", + } + }, + }, + mock_client_cert_source, + ), + ( + # With workloads not present in config, mTLS is disabled. + { + "version": 1, + "cert_configs": {}, + }, + None, + ), + ] + if hasattr(google.auth.transport.mtls, "should_use_client_cert"): + for config_data, expected_cert_source in test_cases: + env = os.environ.copy() + env.pop("GOOGLE_API_USE_CLIENT_CERTIFICATE", "") + with mock.patch.dict(os.environ, env, clear=True): + config_filename = "mock_certificate_config.json" + config_file_content = json.dumps(config_data) + m = mock.mock_open(read_data=config_file_content) + with mock.patch("builtins.open", m): + with mock.patch.dict( + os.environ, {"GOOGLE_API_CERTIFICATE_CONFIG": config_filename} + ): + mock_api_endpoint = "foo" + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, + api_endpoint=mock_api_endpoint, + ) + api_endpoint, cert_source = ( + client_class.get_mtls_endpoint_and_cert_source(options) + ) + assert api_endpoint == mock_api_endpoint + assert cert_source is expected_cert_source + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "never". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_ENDPOINT + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "always". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_MTLS_ENDPOINT + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "auto" and default cert doesn't exist. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=False, + ): + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_ENDPOINT + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "auto" and default cert exists. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=True, + ): + with mock.patch( + "google.auth.transport.mtls.default_client_cert_source", + return_value=mock_client_cert_source, + ): + api_endpoint, cert_source = ( + client_class.get_mtls_endpoint_and_cert_source() + ) + assert api_endpoint == client_class.DEFAULT_MTLS_ENDPOINT + assert cert_source == mock_client_cert_source + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT has + # unsupported value. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "Unsupported"}): + with pytest.raises(MutualTLSChannelError) as excinfo: + client_class.get_mtls_endpoint_and_cert_source() + + assert ( + str(excinfo.value) + == "Environment variable `GOOGLE_API_USE_MTLS_ENDPOINT` must be `never`, `auto` or `always`" + ) + + +@pytest.mark.parametrize("client_class", [SnapshotGroupsClient]) +@mock.patch.object( + SnapshotGroupsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(SnapshotGroupsClient), +) +def test_snapshot_groups_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = SnapshotGroupsClient._DEFAULT_UNIVERSE + default_endpoint = SnapshotGroupsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + mock_universe = "bar.com" + mock_endpoint = SnapshotGroupsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=mock_universe + ) + + # If ClientOptions.api_endpoint is set and GOOGLE_API_USE_CLIENT_CERTIFICATE="true", + # use ClientOptions.api_endpoint as the api endpoint regardless. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + with mock.patch( + "google.auth.transport.requests.AuthorizedSession.configure_mtls_channel" + ): + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, api_endpoint=api_override + ) + client = client_class( + client_options=options, + credentials=ga_credentials.AnonymousCredentials(), + ) + assert client.api_endpoint == api_override + + # If ClientOptions.api_endpoint is not set and GOOGLE_API_USE_MTLS_ENDPOINT="never", + # use the _DEFAULT_ENDPOINT_TEMPLATE populated with GDU as the api endpoint. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): + client = client_class(credentials=ga_credentials.AnonymousCredentials()) + assert client.api_endpoint == default_endpoint + + # If ClientOptions.api_endpoint is not set and GOOGLE_API_USE_MTLS_ENDPOINT="always", + # use the DEFAULT_MTLS_ENDPOINT as the api endpoint. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): + client = client_class(credentials=ga_credentials.AnonymousCredentials()) + assert client.api_endpoint == client_class.DEFAULT_MTLS_ENDPOINT + + # If ClientOptions.api_endpoint is not set, GOOGLE_API_USE_MTLS_ENDPOINT="auto" (default), + # GOOGLE_API_USE_CLIENT_CERTIFICATE="false" (default), default cert source doesn't exist, + # and ClientOptions.universe_domain="bar.com", + # use the _DEFAULT_ENDPOINT_TEMPLATE populated with universe domain as the api endpoint. + options = client_options.ClientOptions() + universe_exists = hasattr(options, "universe_domain") + if universe_exists: + options = client_options.ClientOptions(universe_domain=mock_universe) + client = client_class( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + else: + client = client_class( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + assert client.api_endpoint == ( + mock_endpoint if universe_exists else default_endpoint + ) + assert client.universe_domain == ( + mock_universe if universe_exists else default_universe + ) + + # If ClientOptions does not have a universe domain attribute and GOOGLE_API_USE_MTLS_ENDPOINT="never", + # use the _DEFAULT_ENDPOINT_TEMPLATE populated with GDU as the api endpoint. + options = client_options.ClientOptions() + if hasattr(options, "universe_domain"): + delattr(options, "universe_domain") + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): + client = client_class( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + assert client.api_endpoint == default_endpoint + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (SnapshotGroupsClient, transports.SnapshotGroupsRestTransport, "rest"), + ], +) +def test_snapshot_groups_client_client_options_scopes( + client_class, transport_class, transport_name +): + # Check the case scopes are provided. + options = client_options.ClientOptions( + scopes=["1", "2"], + ) + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=client._DEFAULT_UNIVERSE + ), + scopes=["1", "2"], + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name,grpc_helpers", + [ + (SnapshotGroupsClient, transports.SnapshotGroupsRestTransport, "rest", None), + ], +) +def test_snapshot_groups_client_client_options_credentials_file( + client_class, transport_class, transport_name, grpc_helpers +): + # Check the case credentials file is provided. + options = client_options.ClientOptions(credentials_file="credentials.json") + + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file="credentials.json", + host=client._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=client._DEFAULT_UNIVERSE + ), + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) + + +def test_delete_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.delete in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.delete] = mock_rpc + + request = {} + client.delete(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.delete(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_delete_rest_required_fields(request_type=compute.DeleteSnapshotGroupRequest): + transport_class = transports.SnapshotGroupsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["snapshot_group"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).delete._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["snapshotGroup"] = "snapshot_group_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).delete._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "snapshotGroup" in jsonified_request + assert jsonified_request["snapshotGroup"] == "snapshot_group_value" + + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "delete", + "query_params": pb_request, + } + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.delete(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_delete_rest_unset_required_fields(): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.delete._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "project", + "snapshotGroup", + ) + ) + ) + + +def test_delete_rest_flattened(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "snapshot_group": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + snapshot_group="snapshot_group_value", + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.delete(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/global/snapshotGroups/{snapshot_group}" + % client.transport._host, + args[1], + ) + + +def test_delete_rest_flattened_error(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.delete( + compute.DeleteSnapshotGroupRequest(), + project="project_value", + snapshot_group="snapshot_group_value", + ) + + +def test_delete_unary_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.delete in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.delete] = mock_rpc + + request = {} + client.delete_unary(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.delete_unary(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_delete_unary_rest_required_fields( + request_type=compute.DeleteSnapshotGroupRequest, +): + transport_class = transports.SnapshotGroupsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["snapshot_group"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).delete._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["snapshotGroup"] = "snapshot_group_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).delete._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "snapshotGroup" in jsonified_request + assert jsonified_request["snapshotGroup"] == "snapshot_group_value" + + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "delete", + "query_params": pb_request, + } + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.delete_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_delete_unary_rest_unset_required_fields(): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.delete._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "project", + "snapshotGroup", + ) + ) + ) + + +def test_delete_unary_rest_flattened(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "snapshot_group": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + snapshot_group="snapshot_group_value", + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.delete_unary(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/global/snapshotGroups/{snapshot_group}" + % client.transport._host, + args[1], + ) + + +def test_delete_unary_rest_flattened_error(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.delete_unary( + compute.DeleteSnapshotGroupRequest(), + project="project_value", + snapshot_group="snapshot_group_value", + ) + + +def test_get_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.get in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.get] = mock_rpc + + request = {} + client.get(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.get(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_get_rest_required_fields(request_type=compute.GetSnapshotGroupRequest): + transport_class = transports.SnapshotGroupsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["snapshot_group"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).get._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["snapshotGroup"] = "snapshot_group_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).get._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "snapshotGroup" in jsonified_request + assert jsonified_request["snapshotGroup"] == "snapshot_group_value" + + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.SnapshotGroup() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "get", + "query_params": pb_request, + } + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.SnapshotGroup.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.get(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_get_rest_unset_required_fields(): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.get._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(()) + & set( + ( + "project", + "snapshotGroup", + ) + ) + ) + + +def test_get_rest_flattened(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.SnapshotGroup() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "snapshot_group": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + snapshot_group="snapshot_group_value", + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.SnapshotGroup.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.get(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/global/snapshotGroups/{snapshot_group}" + % client.transport._host, + args[1], + ) + + +def test_get_rest_flattened_error(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.get( + compute.GetSnapshotGroupRequest(), + project="project_value", + snapshot_group="snapshot_group_value", + ) + + +def test_get_iam_policy_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.get_iam_policy in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.get_iam_policy] = mock_rpc + + request = {} + client.get_iam_policy(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.get_iam_policy(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_get_iam_policy_rest_required_fields( + request_type=compute.GetIamPolicySnapshotGroupRequest, +): + transport_class = transports.SnapshotGroupsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["resource"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).get_iam_policy._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["resource"] = "resource_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).get_iam_policy._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("options_requested_policy_version",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "resource" in jsonified_request + assert jsonified_request["resource"] == "resource_value" + + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Policy() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "get", + "query_params": pb_request, + } + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Policy.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.get_iam_policy(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_get_iam_policy_rest_unset_required_fields(): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.get_iam_policy._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("optionsRequestedPolicyVersion",)) + & set( + ( + "project", + "resource", + ) + ) + ) + + +def test_get_iam_policy_rest_flattened(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Policy() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "resource": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + resource="resource_value", + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Policy.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.get_iam_policy(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/global/snapshotGroups/{resource}/getIamPolicy" + % client.transport._host, + args[1], + ) + + +def test_get_iam_policy_rest_flattened_error(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.get_iam_policy( + compute.GetIamPolicySnapshotGroupRequest(), + project="project_value", + resource="resource_value", + ) + + +def test_insert_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.insert in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.insert] = mock_rpc + + request = {} + client.insert(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.insert(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_insert_rest_required_fields(request_type=compute.InsertSnapshotGroupRequest): + transport_class = transports.SnapshotGroupsRestTransport + + request_init = {} + request_init["project"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).insert._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).insert._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.insert(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_insert_rest_unset_required_fields(): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.insert._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "project", + "snapshotGroupResource", + ) + ) + ) + + +def test_insert_rest_flattened(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + snapshot_group_resource=compute.SnapshotGroup( + creation_timestamp="creation_timestamp_value" + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.insert(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/global/snapshotGroups" + % client.transport._host, + args[1], + ) + + +def test_insert_rest_flattened_error(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.insert( + compute.InsertSnapshotGroupRequest(), + project="project_value", + snapshot_group_resource=compute.SnapshotGroup( + creation_timestamp="creation_timestamp_value" + ), + ) + + +def test_insert_unary_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.insert in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.insert] = mock_rpc + + request = {} + client.insert_unary(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.insert_unary(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_insert_unary_rest_required_fields( + request_type=compute.InsertSnapshotGroupRequest, +): + transport_class = transports.SnapshotGroupsRestTransport + + request_init = {} + request_init["project"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).insert._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).insert._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("request_id",)) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.insert_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_insert_unary_rest_unset_required_fields(): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.insert._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(("requestId",)) + & set( + ( + "project", + "snapshotGroupResource", + ) + ) + ) + + +def test_insert_unary_rest_flattened(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + snapshot_group_resource=compute.SnapshotGroup( + creation_timestamp="creation_timestamp_value" + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.insert_unary(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/global/snapshotGroups" + % client.transport._host, + args[1], + ) + + +def test_insert_unary_rest_flattened_error(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.insert_unary( + compute.InsertSnapshotGroupRequest(), + project="project_value", + snapshot_group_resource=compute.SnapshotGroup( + creation_timestamp="creation_timestamp_value" + ), + ) + + +def test_list_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.list in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.list] = mock_rpc + + request = {} + client.list(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.list(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_list_rest_required_fields(request_type=compute.ListSnapshotGroupsRequest): + transport_class = transports.SnapshotGroupsRestTransport + + request_init = {} + request_init["project"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).list._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).list._get_unset_required_fields(jsonified_request) + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "max_results", + "order_by", + "page_token", + "return_partial_success", + ) + ) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ListSnapshotGroups() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "get", + "query_params": pb_request, + } + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.ListSnapshotGroups.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.list(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_list_rest_unset_required_fields(): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.list._get_unset_required_fields({}) + assert set(unset_fields) == ( + set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + "returnPartialSuccess", + ) + ) + & set(("project",)) + ) + + +def test_list_rest_flattened(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.ListSnapshotGroups() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.ListSnapshotGroups.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.list(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/global/snapshotGroups" + % client.transport._host, + args[1], + ) + + +def test_list_rest_flattened_error(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.list( + compute.ListSnapshotGroupsRequest(), + project="project_value", + ) + + +def test_list_rest_pager(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # TODO(kbandes): remove this mock unless there's a good reason for it. + # with mock.patch.object(path_template, 'transcode') as transcode: + # Set the response as a series of pages + response = ( + compute.ListSnapshotGroups( + items=[ + compute.SnapshotGroup(), + compute.SnapshotGroup(), + compute.SnapshotGroup(), + ], + next_page_token="abc", + ), + compute.ListSnapshotGroups( + items=[], + next_page_token="def", + ), + compute.ListSnapshotGroups( + items=[ + compute.SnapshotGroup(), + ], + next_page_token="ghi", + ), + compute.ListSnapshotGroups( + items=[ + compute.SnapshotGroup(), + compute.SnapshotGroup(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.ListSnapshotGroups.to_json(x) for x in response) + return_values = tuple(Response() for i in response) + for return_val, response_val in zip(return_values, response): + return_val._content = response_val.encode("UTF-8") + return_val.status_code = 200 + req.side_effect = return_values + + sample_request = {"project": "sample1"} + + pager = client.list(request=sample_request) + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.SnapshotGroup) for i in results) + + pages = list(client.list(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_set_iam_policy_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert client._transport.set_iam_policy in client._transport._wrapped_methods + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.set_iam_policy] = mock_rpc + + request = {} + client.set_iam_policy(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.set_iam_policy(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_set_iam_policy_rest_required_fields( + request_type=compute.SetIamPolicySnapshotGroupRequest, +): + transport_class = transports.SnapshotGroupsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["resource"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).set_iam_policy._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["resource"] = "resource_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).set_iam_policy._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "resource" in jsonified_request + assert jsonified_request["resource"] == "resource_value" + + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.Policy() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Policy.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.set_iam_policy(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_set_iam_policy_rest_unset_required_fields(): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.set_iam_policy._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(()) + & set( + ( + "globalSetPolicyRequestResource", + "project", + "resource", + ) + ) + ) + + +def test_set_iam_policy_rest_flattened(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Policy() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "resource": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + resource="resource_value", + global_set_policy_request_resource=compute.GlobalSetPolicyRequest( + bindings=[compute.Binding(binding_id="binding_id_value")] + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.Policy.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.set_iam_policy(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/global/snapshotGroups/{resource}/setIamPolicy" + % client.transport._host, + args[1], + ) + + +def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.set_iam_policy( + compute.SetIamPolicySnapshotGroupRequest(), + project="project_value", + resource="resource_value", + global_set_policy_request_resource=compute.GlobalSetPolicyRequest( + bindings=[compute.Binding(binding_id="binding_id_value")] + ), + ) + + +def test_test_iam_permissions_rest_use_cached_wrapped_rpc(): + # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, + # instead of constructing them on each call + with mock.patch("google.api_core.gapic_v1.method.wrap_method") as wrapper_fn: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._transport.test_iam_permissions in client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.Mock() + mock_rpc.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client._transport._wrapped_methods[client._transport.test_iam_permissions] = ( + mock_rpc + ) + + request = {} + client.test_iam_permissions(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.test_iam_permissions(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +def test_test_iam_permissions_rest_required_fields( + request_type=compute.TestIamPermissionsSnapshotGroupRequest, +): + transport_class = transports.SnapshotGroupsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["resource"] = "" + request = request_type(**request_init) + pb_request = request_type.pb(request) + jsonified_request = json.loads( + json_format.MessageToJson(pb_request, use_integers_for_enums=False) + ) + + # verify fields with default values are dropped + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).test_iam_permissions._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["resource"] = "resource_value" + + unset_fields = transport_class( + credentials=ga_credentials.AnonymousCredentials() + ).test_iam_permissions._get_unset_required_fields(jsonified_request) + jsonified_request.update(unset_fields) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "resource" in jsonified_request + assert jsonified_request["resource"] == "resource_value" + + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.TestPermissionsResponse() + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # We need to mock transcode() because providing default values + # for required fields will fail the real version if the http_options + # expect actual values for those fields. + with mock.patch.object(path_template, "transcode") as transcode: + # A uri without fields and an empty body will force all the + # request fields to show up in the query_params. + pb_request = request_type.pb(request) + transcode_result = { + "uri": "v1/sample_method", + "method": "post", + "query_params": pb_request, + } + transcode_result["body"] = pb_request + transcode.return_value = transcode_result + + response_value = Response() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.TestPermissionsResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + response = client.test_iam_permissions(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert expected_params == actual_params + + +def test_test_iam_permissions_rest_unset_required_fields(): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials + ) + + unset_fields = transport.test_iam_permissions._get_unset_required_fields({}) + assert set(unset_fields) == ( + set(()) + & set( + ( + "project", + "resource", + "testPermissionsRequestResource", + ) + ) + ) + + +def test_test_iam_permissions_rest_flattened(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.TestPermissionsResponse() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "resource": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + resource="resource_value", + test_permissions_request_resource=compute.TestPermissionsRequest( + permissions=["permissions_value"] + ), + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + # Convert return value to protobuf type + return_value = compute.TestPermissionsResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value._content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + + client.test_iam_permissions(**mock_args) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(req.mock_calls) == 1 + _, args, _ = req.mock_calls[0] + assert path_template.validate( + "%s/compute/beta/projects/{project}/global/snapshotGroups/{resource}/testIamPermissions" + % client.transport._host, + args[1], + ) + + +def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.test_iam_permissions( + compute.TestIamPermissionsSnapshotGroupRequest(), + project="project_value", + resource="resource_value", + test_permissions_request_resource=compute.TestPermissionsRequest( + permissions=["permissions_value"] + ), + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = SnapshotGroupsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = SnapshotGroupsClient( + client_options=options, + transport=transport, + ) + + # It is an error to provide an api_key and a credential. + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = SnapshotGroupsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = SnapshotGroupsClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = SnapshotGroupsClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.SnapshotGroupsRestTransport, + ], +) +def test_transport_adc(transport_class): + # Test default credentials are used if not provided. + with mock.patch.object(google.auth, "default") as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport_class() + adc.assert_called_once() + + +def test_transport_kind_rest(): + transport = SnapshotGroupsClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_delete_rest_bad_request(request_type=compute.DeleteSnapshotGroupRequest): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "snapshot_group": "sample2"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.delete(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.DeleteSnapshotGroupRequest, + dict, + ], +) +def test_delete_rest_call_success(request_type): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "snapshot_group": "sample2"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation( + client_operation_id="client_operation_id_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + end_time="end_time_value", + http_error_message="http_error_message_value", + http_error_status_code=2374, + id=205, + insert_time="insert_time_value", + kind="kind_value", + name="name_value", + operation_group_id="operation_group_id_value", + operation_type="operation_type_value", + progress=885, + region="region_value", + self_link="self_link_value", + start_time="start_time_value", + status=compute.Operation.Status.DONE, + status_message="status_message_value", + target_id=947, + target_link="target_link_value", + user="user_value", + zone="zone_value", + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.delete(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, extended_operation.ExtendedOperation) + assert response.client_operation_id == "client_operation_id_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.end_time == "end_time_value" + assert response.http_error_message == "http_error_message_value" + assert response.http_error_status_code == 2374 + assert response.id == 205 + assert response.insert_time == "insert_time_value" + assert response.kind == "kind_value" + assert response.name == "name_value" + assert response.operation_group_id == "operation_group_id_value" + assert response.operation_type == "operation_type_value" + assert response.progress == 885 + assert response.region == "region_value" + assert response.self_link == "self_link_value" + assert response.start_time == "start_time_value" + assert response.status == compute.Operation.Status.DONE + assert response.status_message == "status_message_value" + assert response.target_id == 947 + assert response.target_link == "target_link_value" + assert response.user == "user_value" + assert response.zone == "zone_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_delete_rest_interceptors(null_interceptor): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.SnapshotGroupsRestInterceptor(), + ) + client = SnapshotGroupsClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_delete" + ) as post, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_delete_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "pre_delete" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.DeleteSnapshotGroupRequest.pb( + compute.DeleteSnapshotGroupRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.Operation.to_json(compute.Operation()) + req.return_value.content = return_value + + request = compute.DeleteSnapshotGroupRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.delete( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_get_rest_bad_request(request_type=compute.GetSnapshotGroupRequest): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "snapshot_group": "sample2"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.get(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.GetSnapshotGroupRequest, + dict, + ], +) +def test_get_rest_call_success(request_type): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "snapshot_group": "sample2"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.SnapshotGroup( + creation_timestamp="creation_timestamp_value", + description="description_value", + id=205, + kind="kind_value", + name="name_value", + self_link="self_link_value", + self_link_with_id="self_link_with_id_value", + source_instant_snapshot_group="source_instant_snapshot_group_value", + status="status_value", + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.SnapshotGroup.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.get(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, compute.SnapshotGroup) + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.id == 205 + assert response.kind == "kind_value" + assert response.name == "name_value" + assert response.self_link == "self_link_value" + assert response.self_link_with_id == "self_link_with_id_value" + assert ( + response.source_instant_snapshot_group == "source_instant_snapshot_group_value" + ) + assert response.status == "status_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_rest_interceptors(null_interceptor): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.SnapshotGroupsRestInterceptor(), + ) + client = SnapshotGroupsClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_get" + ) as post, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_get_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "pre_get" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetSnapshotGroupRequest.pb( + compute.GetSnapshotGroupRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.SnapshotGroup.to_json(compute.SnapshotGroup()) + req.return_value.content = return_value + + request = compute.GetSnapshotGroupRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.SnapshotGroup() + post_with_metadata.return_value = compute.SnapshotGroup(), metadata + + client.get( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_get_iam_policy_rest_bad_request( + request_type=compute.GetIamPolicySnapshotGroupRequest, +): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "resource": "sample2"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.get_iam_policy(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.GetIamPolicySnapshotGroupRequest, + dict, + ], +) +def test_get_iam_policy_rest_call_success(request_type): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "resource": "sample2"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Policy( + etag="etag_value", + iam_owned=True, + version=774, + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Policy.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.get_iam_policy(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, compute.Policy) + assert response.etag == "etag_value" + assert response.iam_owned is True + assert response.version == 774 + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_iam_policy_rest_interceptors(null_interceptor): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.SnapshotGroupsRestInterceptor(), + ) + client = SnapshotGroupsClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_get_iam_policy" + ) as post, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_get_iam_policy_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "pre_get_iam_policy" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetIamPolicySnapshotGroupRequest.pb( + compute.GetIamPolicySnapshotGroupRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.Policy.to_json(compute.Policy()) + req.return_value.content = return_value + + request = compute.GetIamPolicySnapshotGroupRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Policy() + post_with_metadata.return_value = compute.Policy(), metadata + + client.get_iam_policy( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_insert_rest_bad_request(request_type=compute.InsertSnapshotGroupRequest): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.insert(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.InsertSnapshotGroupRequest, + dict, + ], +) +def test_insert_rest_call_success(request_type): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1"} + request_init["snapshot_group_resource"] = { + "creation_timestamp": "creation_timestamp_value", + "description": "description_value", + "id": 205, + "kind": "kind_value", + "name": "name_value", + "self_link": "self_link_value", + "self_link_with_id": "self_link_with_id_value", + "source_info": { + "consistency_group": "consistency_group_value", + "consistency_group_id": "consistency_group_id_value", + }, + "source_instant_snapshot_group": "source_instant_snapshot_group_value", + "source_instant_snapshot_group_info": { + "instant_snapshot_group": "instant_snapshot_group_value", + "instant_snapshot_group_id": "instant_snapshot_group_id_value", + }, + "status": "status_value", + } + # The version of a generated dependency at test runtime may differ from the version used during generation. + # Delete any fields which are not present in the current runtime dependency + # See https://github.com/googleapis/gapic-generator-python/issues/1748 + + # Determine if the message type is proto-plus or protobuf + test_field = compute.InsertSnapshotGroupRequest.meta.fields[ + "snapshot_group_resource" + ] + + def get_message_fields(field): + # Given a field which is a message (composite type), return a list with + # all the fields of the message. + # If the field is not a composite type, return an empty list. + message_fields = [] + + if hasattr(field, "message") and field.message: + is_field_type_proto_plus_type = not hasattr(field.message, "DESCRIPTOR") + + if is_field_type_proto_plus_type: + message_fields = field.message.meta.fields.values() + # Add `# pragma: NO COVER` because there may not be any `*_pb2` field types + else: # pragma: NO COVER + message_fields = field.message.DESCRIPTOR.fields + return message_fields + + runtime_nested_fields = [ + (field.name, nested_field.name) + for field in get_message_fields(test_field) + for nested_field in get_message_fields(field) + ] + + subfields_not_in_runtime = [] + + # For each item in the sample request, create a list of sub fields which are not present at runtime + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for field, value in request_init[ + "snapshot_group_resource" + ].items(): # pragma: NO COVER + result = None + is_repeated = False + # For repeated fields + if isinstance(value, list) and len(value): + is_repeated = True + result = value[0] + # For fields where the type is another message + if isinstance(value, dict): + result = value + + if result and hasattr(result, "keys"): + for subfield in result.keys(): + if (field, subfield) not in runtime_nested_fields: + subfields_not_in_runtime.append( + { + "field": field, + "subfield": subfield, + "is_repeated": is_repeated, + } + ) + + # Remove fields from the sample request which are not present in the runtime version of the dependency + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for subfield_to_delete in subfields_not_in_runtime: # pragma: NO COVER + field = subfield_to_delete.get("field") + field_repeated = subfield_to_delete.get("is_repeated") + subfield = subfield_to_delete.get("subfield") + if subfield: + if field_repeated: + for i in range(0, len(request_init["snapshot_group_resource"][field])): + del request_init["snapshot_group_resource"][field][i][subfield] + else: + del request_init["snapshot_group_resource"][field][subfield] + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Operation( + client_operation_id="client_operation_id_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + end_time="end_time_value", + http_error_message="http_error_message_value", + http_error_status_code=2374, + id=205, + insert_time="insert_time_value", + kind="kind_value", + name="name_value", + operation_group_id="operation_group_id_value", + operation_type="operation_type_value", + progress=885, + region="region_value", + self_link="self_link_value", + start_time="start_time_value", + status=compute.Operation.Status.DONE, + status_message="status_message_value", + target_id=947, + target_link="target_link_value", + user="user_value", + zone="zone_value", + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Operation.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.insert(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, extended_operation.ExtendedOperation) + assert response.client_operation_id == "client_operation_id_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.end_time == "end_time_value" + assert response.http_error_message == "http_error_message_value" + assert response.http_error_status_code == 2374 + assert response.id == 205 + assert response.insert_time == "insert_time_value" + assert response.kind == "kind_value" + assert response.name == "name_value" + assert response.operation_group_id == "operation_group_id_value" + assert response.operation_type == "operation_type_value" + assert response.progress == 885 + assert response.region == "region_value" + assert response.self_link == "self_link_value" + assert response.start_time == "start_time_value" + assert response.status == compute.Operation.Status.DONE + assert response.status_message == "status_message_value" + assert response.target_id == 947 + assert response.target_link == "target_link_value" + assert response.user == "user_value" + assert response.zone == "zone_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_insert_rest_interceptors(null_interceptor): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.SnapshotGroupsRestInterceptor(), + ) + client = SnapshotGroupsClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_insert" + ) as post, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_insert_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "pre_insert" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.InsertSnapshotGroupRequest.pb( + compute.InsertSnapshotGroupRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.Operation.to_json(compute.Operation()) + req.return_value.content = return_value + + request = compute.InsertSnapshotGroupRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.insert( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_list_rest_bad_request(request_type=compute.ListSnapshotGroupsRequest): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.list(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.ListSnapshotGroupsRequest, + dict, + ], +) +def test_list_rest_call_success(request_type): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.ListSnapshotGroups( + etag="etag_value", + id="id_value", + kind="kind_value", + next_page_token="next_page_token_value", + self_link="self_link_value", + unreachables=["unreachables_value"], + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.ListSnapshotGroups.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.list(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListPager) + assert response.etag == "etag_value" + assert response.id == "id_value" + assert response.kind == "kind_value" + assert response.next_page_token == "next_page_token_value" + assert response.self_link == "self_link_value" + assert response.unreachables == ["unreachables_value"] + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_list_rest_interceptors(null_interceptor): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.SnapshotGroupsRestInterceptor(), + ) + client = SnapshotGroupsClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_list" + ) as post, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_list_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "pre_list" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListSnapshotGroupsRequest.pb( + compute.ListSnapshotGroupsRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.ListSnapshotGroups.to_json(compute.ListSnapshotGroups()) + req.return_value.content = return_value + + request = compute.ListSnapshotGroupsRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ListSnapshotGroups() + post_with_metadata.return_value = compute.ListSnapshotGroups(), metadata + + client.list( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_set_iam_policy_rest_bad_request( + request_type=compute.SetIamPolicySnapshotGroupRequest, +): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "resource": "sample2"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.set_iam_policy(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.SetIamPolicySnapshotGroupRequest, + dict, + ], +) +def test_set_iam_policy_rest_call_success(request_type): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "resource": "sample2"} + request_init["global_set_policy_request_resource"] = { + "bindings": [ + { + "binding_id": "binding_id_value", + "condition": { + "description": "description_value", + "expression": "expression_value", + "location": "location_value", + "title": "title_value", + }, + "members": ["members_value1", "members_value2"], + "role": "role_value", + } + ], + "etag": "etag_value", + "policy": { + "audit_configs": [ + { + "audit_log_configs": [ + { + "exempted_members": [ + "exempted_members_value1", + "exempted_members_value2", + ], + "ignore_child_exemptions": True, + "log_type": "log_type_value", + } + ], + "exempted_members": [ + "exempted_members_value1", + "exempted_members_value2", + ], + "service": "service_value", + } + ], + "bindings": {}, + "etag": "etag_value", + "iam_owned": True, + "version": 774, + }, + } + # The version of a generated dependency at test runtime may differ from the version used during generation. + # Delete any fields which are not present in the current runtime dependency + # See https://github.com/googleapis/gapic-generator-python/issues/1748 + + # Determine if the message type is proto-plus or protobuf + test_field = compute.SetIamPolicySnapshotGroupRequest.meta.fields[ + "global_set_policy_request_resource" + ] + + def get_message_fields(field): + # Given a field which is a message (composite type), return a list with + # all the fields of the message. + # If the field is not a composite type, return an empty list. + message_fields = [] + + if hasattr(field, "message") and field.message: + is_field_type_proto_plus_type = not hasattr(field.message, "DESCRIPTOR") + + if is_field_type_proto_plus_type: + message_fields = field.message.meta.fields.values() + # Add `# pragma: NO COVER` because there may not be any `*_pb2` field types + else: # pragma: NO COVER + message_fields = field.message.DESCRIPTOR.fields + return message_fields + + runtime_nested_fields = [ + (field.name, nested_field.name) + for field in get_message_fields(test_field) + for nested_field in get_message_fields(field) + ] + + subfields_not_in_runtime = [] + + # For each item in the sample request, create a list of sub fields which are not present at runtime + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for field, value in request_init[ + "global_set_policy_request_resource" + ].items(): # pragma: NO COVER + result = None + is_repeated = False + # For repeated fields + if isinstance(value, list) and len(value): + is_repeated = True + result = value[0] + # For fields where the type is another message + if isinstance(value, dict): + result = value + + if result and hasattr(result, "keys"): + for subfield in result.keys(): + if (field, subfield) not in runtime_nested_fields: + subfields_not_in_runtime.append( + { + "field": field, + "subfield": subfield, + "is_repeated": is_repeated, + } + ) + + # Remove fields from the sample request which are not present in the runtime version of the dependency + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for subfield_to_delete in subfields_not_in_runtime: # pragma: NO COVER + field = subfield_to_delete.get("field") + field_repeated = subfield_to_delete.get("is_repeated") + subfield = subfield_to_delete.get("subfield") + if subfield: + if field_repeated: + for i in range( + 0, len(request_init["global_set_policy_request_resource"][field]) + ): + del request_init["global_set_policy_request_resource"][field][i][ + subfield + ] + else: + del request_init["global_set_policy_request_resource"][field][subfield] + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.Policy( + etag="etag_value", + iam_owned=True, + version=774, + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.Policy.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.set_iam_policy(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, compute.Policy) + assert response.etag == "etag_value" + assert response.iam_owned is True + assert response.version == 774 + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_set_iam_policy_rest_interceptors(null_interceptor): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.SnapshotGroupsRestInterceptor(), + ) + client = SnapshotGroupsClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_set_iam_policy" + ) as post, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_set_iam_policy_with_metadata" + ) as post_with_metadata, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "pre_set_iam_policy" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.SetIamPolicySnapshotGroupRequest.pb( + compute.SetIamPolicySnapshotGroupRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.Policy.to_json(compute.Policy()) + req.return_value.content = return_value + + request = compute.SetIamPolicySnapshotGroupRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Policy() + post_with_metadata.return_value = compute.Policy(), metadata + + client.set_iam_policy( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_test_iam_permissions_rest_bad_request( + request_type=compute.TestIamPermissionsSnapshotGroupRequest, +): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "resource": "sample2"} + request = request_type(**request_init) + + # Mock the http request call within the method and fake a BadRequest error. + with mock.patch.object(Session, "request") as req, pytest.raises( + core_exceptions.BadRequest + ): + # Wrap the value into a proper Response obj + response_value = mock.Mock() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = mock.Mock() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.test_iam_permissions(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.TestIamPermissionsSnapshotGroupRequest, + dict, + ], +) +def test_test_iam_permissions_rest_call_success(request_type): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "resource": "sample2"} + request_init["test_permissions_request_resource"] = { + "permissions": ["permissions_value1", "permissions_value2"] + } + # The version of a generated dependency at test runtime may differ from the version used during generation. + # Delete any fields which are not present in the current runtime dependency + # See https://github.com/googleapis/gapic-generator-python/issues/1748 + + # Determine if the message type is proto-plus or protobuf + test_field = compute.TestIamPermissionsSnapshotGroupRequest.meta.fields[ + "test_permissions_request_resource" + ] + + def get_message_fields(field): + # Given a field which is a message (composite type), return a list with + # all the fields of the message. + # If the field is not a composite type, return an empty list. + message_fields = [] + + if hasattr(field, "message") and field.message: + is_field_type_proto_plus_type = not hasattr(field.message, "DESCRIPTOR") + + if is_field_type_proto_plus_type: + message_fields = field.message.meta.fields.values() + # Add `# pragma: NO COVER` because there may not be any `*_pb2` field types + else: # pragma: NO COVER + message_fields = field.message.DESCRIPTOR.fields + return message_fields + + runtime_nested_fields = [ + (field.name, nested_field.name) + for field in get_message_fields(test_field) + for nested_field in get_message_fields(field) + ] + + subfields_not_in_runtime = [] + + # For each item in the sample request, create a list of sub fields which are not present at runtime + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for field, value in request_init[ + "test_permissions_request_resource" + ].items(): # pragma: NO COVER + result = None + is_repeated = False + # For repeated fields + if isinstance(value, list) and len(value): + is_repeated = True + result = value[0] + # For fields where the type is another message + if isinstance(value, dict): + result = value + + if result and hasattr(result, "keys"): + for subfield in result.keys(): + if (field, subfield) not in runtime_nested_fields: + subfields_not_in_runtime.append( + { + "field": field, + "subfield": subfield, + "is_repeated": is_repeated, + } + ) + + # Remove fields from the sample request which are not present in the runtime version of the dependency + # Add `# pragma: NO COVER` because this test code will not run if all subfields are present at runtime + for subfield_to_delete in subfields_not_in_runtime: # pragma: NO COVER + field = subfield_to_delete.get("field") + field_repeated = subfield_to_delete.get("is_repeated") + subfield = subfield_to_delete.get("subfield") + if subfield: + if field_repeated: + for i in range( + 0, len(request_init["test_permissions_request_resource"][field]) + ): + del request_init["test_permissions_request_resource"][field][i][ + subfield + ] + else: + del request_init["test_permissions_request_resource"][field][subfield] + request = request_type(**request_init) + + # Mock the http request call within the method and fake a response. + with mock.patch.object(type(client.transport._session), "request") as req: + # Designate an appropriate value for the returned response. + return_value = compute.TestPermissionsResponse( + permissions=["permissions_value"], + ) + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + + # Convert return value to protobuf type + return_value = compute.TestPermissionsResponse.pb(return_value) + json_return_value = json_format.MessageToJson(return_value) + response_value.content = json_return_value.encode("UTF-8") + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + response = client.test_iam_permissions(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, compute.TestPermissionsResponse) + assert response.permissions == ["permissions_value"] + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_test_iam_permissions_rest_interceptors(null_interceptor): + transport = transports.SnapshotGroupsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.SnapshotGroupsRestInterceptor(), + ) + client = SnapshotGroupsClient(transport=transport) + + with mock.patch.object( + type(client.transport._session), "request" + ) as req, mock.patch.object( + path_template, "transcode" + ) as transcode, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "post_test_iam_permissions" + ) as post, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, + "post_test_iam_permissions_with_metadata", + ) as post_with_metadata, mock.patch.object( + transports.SnapshotGroupsRestInterceptor, "pre_test_iam_permissions" + ) as pre: + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.TestIamPermissionsSnapshotGroupRequest.pb( + compute.TestIamPermissionsSnapshotGroupRequest() + ) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } + + req.return_value = mock.Mock() + req.return_value.status_code = 200 + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + return_value = compute.TestPermissionsResponse.to_json( + compute.TestPermissionsResponse() + ) + req.return_value.content = return_value + + request = compute.TestIamPermissionsSnapshotGroupRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.TestPermissionsResponse() + post_with_metadata.return_value = compute.TestPermissionsResponse(), metadata + + client.test_iam_permissions( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_initialize_client_w_rest(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + assert client is not None + + +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_delete_unary_empty_call_rest(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + client.delete_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.DeleteSnapshotGroupRequest() + + assert args[0] == request_msg + + +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_get_empty_call_rest(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + client.get(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.GetSnapshotGroupRequest() + + assert args[0] == request_msg + + +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_get_iam_policy_empty_call_rest(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.get_iam_policy), "__call__") as call: + client.get_iam_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.GetIamPolicySnapshotGroupRequest() + + assert args[0] == request_msg + + +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_insert_unary_empty_call_rest(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + client.insert_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.InsertSnapshotGroupRequest() + + assert args[0] == request_msg + + +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_list_empty_call_rest(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + client.list(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.ListSnapshotGroupsRequest() + + assert args[0] == request_msg + + +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_set_iam_policy_empty_call_rest(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.set_iam_policy), "__call__") as call: + client.set_iam_policy(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.SetIamPolicySnapshotGroupRequest() + + assert args[0] == request_msg + + +# This test is a coverage failsafe to make sure that totally empty calls, +# i.e. request == None and no flattened fields passed, work. +def test_test_iam_permissions_empty_call_rest(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + client.test_iam_permissions(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.TestIamPermissionsSnapshotGroupRequest() + + assert args[0] == request_msg + + +def test_snapshot_groups_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.SnapshotGroupsTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_snapshot_groups_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1beta.services.snapshot_groups.transports.SnapshotGroupsTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.SnapshotGroupsTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "delete", + "get", + "get_iam_policy", + "insert", + "list", + "set_iam_policy", + "test_iam_permissions", + ) + for method in methods: + with pytest.raises(NotImplementedError): + getattr(transport, method)(request=object()) + + with pytest.raises(NotImplementedError): + transport.close() + + # Catch all for all remaining methods and properties + remainder = [ + "kind", + ] + for r in remainder: + with pytest.raises(NotImplementedError): + getattr(transport, r)() + + +def test_snapshot_groups_base_transport_with_credentials_file(): + # Instantiate the base transport with a credentials file + with mock.patch.object( + google.auth, "load_credentials_from_file", autospec=True + ) as load_creds, mock.patch( + "google.cloud.compute_v1beta.services.snapshot_groups.transports.SnapshotGroupsTransport._prep_wrapped_messages" + ) as Transport: + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.SnapshotGroupsTransport( + credentials_file="credentials.json", + quota_project_id="octopus", + ) + load_creds.assert_called_once_with( + "credentials.json", + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id="octopus", + ) + + +def test_snapshot_groups_base_transport_with_adc(): + # Test the default credentials are used if credentials and credentials_file are None. + with mock.patch.object(google.auth, "default", autospec=True) as adc, mock.patch( + "google.cloud.compute_v1beta.services.snapshot_groups.transports.SnapshotGroupsTransport._prep_wrapped_messages" + ) as Transport: + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.SnapshotGroupsTransport() + adc.assert_called_once() + + +def test_snapshot_groups_auth_adc(): + # If no credentials are provided, we should use ADC credentials. + with mock.patch.object(google.auth, "default", autospec=True) as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + SnapshotGroupsClient() + adc.assert_called_once_with( + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id=None, + ) + + +def test_snapshot_groups_http_transport_client_cert_source_for_mtls(): + cred = ga_credentials.AnonymousCredentials() + with mock.patch( + "google.auth.transport.requests.AuthorizedSession.configure_mtls_channel" + ) as mock_configure_mtls_channel: + transports.SnapshotGroupsRestTransport( + credentials=cred, client_cert_source_for_mtls=client_cert_source_callback + ) + mock_configure_mtls_channel.assert_called_once_with(client_cert_source_callback) + + +@pytest.mark.parametrize( + "transport_name", + [ + "rest", + ], +) +def test_snapshot_groups_host_no_port(transport_name): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_options=client_options.ClientOptions( + api_endpoint="compute.googleapis.com" + ), + transport=transport_name, + ) + assert client.transport._host == ( + "compute.googleapis.com:443" + if transport_name in ["grpc", "grpc_asyncio"] + else "https://compute.googleapis.com" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + "rest", + ], +) +def test_snapshot_groups_host_with_port(transport_name): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_options=client_options.ClientOptions( + api_endpoint="compute.googleapis.com:8000" + ), + transport=transport_name, + ) + assert client.transport._host == ( + "compute.googleapis.com:8000" + if transport_name in ["grpc", "grpc_asyncio"] + else "https://compute.googleapis.com:8000" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + "rest", + ], +) +def test_snapshot_groups_client_transport_session_collision(transport_name): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = SnapshotGroupsClient( + credentials=creds1, + transport=transport_name, + ) + client2 = SnapshotGroupsClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.delete._session + session2 = client2.transport.delete._session + assert session1 != session2 + session1 = client1.transport.get._session + session2 = client2.transport.get._session + assert session1 != session2 + session1 = client1.transport.get_iam_policy._session + session2 = client2.transport.get_iam_policy._session + assert session1 != session2 + session1 = client1.transport.insert._session + session2 = client2.transport.insert._session + assert session1 != session2 + session1 = client1.transport.list._session + session2 = client2.transport.list._session + assert session1 != session2 + session1 = client1.transport.set_iam_policy._session + session2 = client2.transport.set_iam_policy._session + assert session1 != session2 + session1 = client1.transport.test_iam_permissions._session + session2 = client2.transport.test_iam_permissions._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = SnapshotGroupsClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = SnapshotGroupsClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = SnapshotGroupsClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = SnapshotGroupsClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = SnapshotGroupsClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = SnapshotGroupsClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = SnapshotGroupsClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = SnapshotGroupsClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = SnapshotGroupsClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = SnapshotGroupsClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = SnapshotGroupsClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = SnapshotGroupsClient.parse_common_project_path(path) + assert expected == actual + + +def test_common_location_path(): + project = "winkle" + location = "nautilus" + expected = "projects/{project}/locations/{location}".format( + project=project, + location=location, + ) + actual = SnapshotGroupsClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = SnapshotGroupsClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = SnapshotGroupsClient.parse_common_location_path(path) + assert expected == actual + + +def test_client_with_default_client_info(): + client_info = gapic_v1.client_info.ClientInfo() + + with mock.patch.object( + transports.SnapshotGroupsTransport, "_prep_wrapped_messages" + ) as prep: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.SnapshotGroupsTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = SnapshotGroupsClient.get_transport_class() + transport = transport_class( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + +def test_transport_close_rest(): + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + with mock.patch.object( + type(getattr(client.transport, "_session")), "close" + ) as close: + with client: + close.assert_not_called() + close.assert_called_once() + + +def test_client_ctx(): + transports = [ + "rest", + ] + for transport in transports: + client = SnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport + ) + # Test client calls underlying transport. + with mock.patch.object(type(client.transport), "close") as close: + close.assert_not_called() + with client: + pass + close.assert_called() + + +@pytest.mark.parametrize( + "client_class,transport_class", + [ + (SnapshotGroupsClient, transports.SnapshotGroupsRestTransport), + ], +) +def test_api_key_credentials(client_class, transport_class): + with mock.patch.object( + google.auth._default, "get_api_key_credentials", create=True + ) as get_api_key_credentials: + mock_cred = mock.Mock() + get_api_key_credentials.return_value = mock_cred + options = client_options.ClientOptions() + options.api_key = "api_key" + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options) + patched.assert_called_once_with( + credentials=mock_cred, + credentials_file=None, + host=client._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=client._DEFAULT_UNIVERSE + ), + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + api_audience=None, + ) diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_snapshots.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_snapshots.py index 2e4e606c4d33..e55ff00531b5 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_snapshots.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_snapshots.py @@ -4065,6 +4065,8 @@ def test_get_rest_call_success(request_type): satisfies_pzi=True, satisfies_pzs=True, self_link="self_link_value", + snapshot_group_id="snapshot_group_id_value", + snapshot_group_name="snapshot_group_name_value", snapshot_type="snapshot_type_value", source_disk="source_disk_value", source_disk_for_recovery_checkpoint="source_disk_for_recovery_checkpoint_value", @@ -4115,6 +4117,8 @@ def test_get_rest_call_success(request_type): assert response.satisfies_pzi is True assert response.satisfies_pzs is True assert response.self_link == "self_link_value" + assert response.snapshot_group_id == "snapshot_group_id_value" + assert response.snapshot_group_name == "snapshot_group_name_value" assert response.snapshot_type == "snapshot_type_value" assert response.source_disk == "source_disk_value" assert ( @@ -4395,6 +4399,8 @@ def test_insert_rest_call_success(request_type): "rsa_encrypted_key": "rsa_encrypted_key_value", "sha256": "sha256_value", }, + "snapshot_group_id": "snapshot_group_id_value", + "snapshot_group_name": "snapshot_group_name_value", "snapshot_type": "snapshot_type_value", "source_disk": "source_disk_value", "source_disk_encryption_key": {},